shell脚本重定向输出
我有一个shell脚本来监视进程,因为它阻止进程关闭。 如果进程已关闭,该脚本将重新启动它。 顺便说一句,当系统启动时,crontab将自动运行脚本。 如何获取由shell脚本启动的进程的输出shell脚本重定向输出,shell,redirect,output,Shell,Redirect,Output,我有一个shell脚本来监视进程,因为它阻止进程关闭。 如果进程已关闭,该脚本将重新启动它。 顺便说一句,当系统启动时,crontab将自动运行脚本。 如何获取由shell脚本启动的进程的输出 #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH while : do if [ -z "$(ps -ef | grep -v grep | grep 225.0.
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
while :
do
if [ -z "$(ps -ef | grep -v grep | grep 225.0.6.4)" ]; then
date +"%m-%d-%y %T" >> /home/andy/log/stream.log
echo "225.0.6.4 - 103 not worked and restart process" >> /home/andy/log/stream.log
echo "225.0.6.4 - 103 not worked and restart process"
/usr/bin/tzap -a 1 -c /home/andy/channels.conf -o - -r -p "D" | /home/andy/ffmpeg -f mpegts -i pipe:0 -c:v libx264 -preset medium -crf 23 -bufsize 3000K -minrate 1200k -maxrate 1200k -pix_fmt yuv420p -g 50 -s 1024x768 -acodec libmp3lame -b:a 128k -ac 2 -ar 44100 -f mpegts udp://225.0.6.4:50000 &
fi
sleep 1
done
看起来您希望管道的输出也转到日志文件。若有,则:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
exec >> /home/andy/log/stream.log
while :
do
if [ -z "$(ps -ef | grep -v grep | grep 225.0.6.4)" ]; then
date +"%m-%d-%y %T" >> /home/andy/log/stream.log
echo "225.0.6.4 - 103 not worked and restart process"
echo "225.0.6.4 - 103 not worked and restart process" >&2
/usr/bin/tzap -a 1 -c /home/andy/channels.conf -o - -r -p "D" |
/home/andy/ffmpeg -f mpegts -i pipe:0 -c:v libx264 -preset medium -crf 23 \
-bufsize 3000K -minrate 1200k -maxrate 1200k -pix_fmt yuv420p -g 50 \
-s 1024x768 -acodec libmp3lame -b:a 128k -ac 2 -ar 44100 -f mpegts \
udp://225.0.6.4:50000 &
fi
sleep 1
done
行exec>/home/andy/log/stream.log
确保所有标准输出都进入日志文件。我做了一些小小的欺骗,安排了一些事情,使以前发送到标准输出的日志消息现在改为发送到标准错误。如果必须将其转到原始标准输出,则:
exec 3>&1 >> /home/andy/log/stream.log
…
echo "225.0.6.4 - 103 not worked and restart process" >&3
这就行了。其实并不难。3>&1
使文件描述符3指向标准输出所指向的相同位置(该行的其余部分立即使标准输出指向日志文件)。&3
将输出重定向到与原始标准输出相同的文件描述符3