ffmpegプロセスの監視にmonitを使用しようとしています。このため私は最初に3つの引数(開始、停止、再起動)を持つbashスクリプトを作成しました。ターミナルから手動でスクリプトを実行すると、すべてのことが完全に機能し、どのように設計されたのですか?プロセスが開始され、現在のprocees idが作成され、pidファイルに保存されます。プロセスを停止したい場合は、現在のpidファイルを取得し、与えられたpidでプロセスを終了します。再起動も正常に動作し、まず停止してからプロセスを開始します。monitを使用したffmpegプロセスの再起動
問題
私はそれがダウンした場合のプロセスを監視するためのMONITをインストールしました。私は正確な方法でプロセスを確認するように設定しました。
その後、コマンド./thisBashScript start
でプロセスを開始すると、監視が開始されます。 monit状態では、プロセスffmpegは実行中として表示されます。 ffmpegプロセスのpidを使用してプロセスを手動で終了し、monitがプロセスを再起動するかどうかをテストした後、プロセスは再起動しません。たとえ新しいPIDが作成されて/var/run/ffmpeg.pid
に保存されています。ここで
はMONITログです:
[EET Mar 21 12:12:37] error : 'ffmpeg' process is not running
[EET Mar 21 12:12:37] info : 'ffmpeg' trying to restart
[EET Mar 21 12:12:37] info : 'ffmpeg' start: /etc/init.d/iptv/thisBashScript
私は、次のbashスクリプトを持っている:
#!/bin/sh
pid_file="/var/run/ffmpeg.pid"
case "$1" in
restart)
/etc/init.d/iptv/thisBashScript stop
/etc/init.d/iptv/thisBashScript start
;;
start)
rm $pid_file
ffmpeg -i udp://@someIp:1234 -acodec libmp3lame -ac 1 -ar 44100 -ab 64k -s 640x360 -deinterlace -vcodec h264_qsv -vb 700k -f flv rtmp://someIp/applicationName/360 &
ch_pid=$!
echo "Start HLS: ffmpeg = $ch_pid";
echo $ch_pid > $pid_file
;;
stop)
echo "Stop transcoding";
kill `cat $pid_file`
;;
*)
echo "Usage: /etc/init.d/thisBashScript {start|stop|restart}"
exit 1
;;
esac
exit 0
echo $pid_file
このbashスクリプトは(起動、再起動および停止)
-
を3つの引数を受け入れることができます
start(nginx rtmpサーバー上でビデオをストリーミングするffmpegコマンドを開始します)。
stop(ffmpegコマンドを停止します)。
restart(ffmpegコマンドを停止してから開始します);ここで
は私MONIT構成
check process ffmpeg with pidfile /var/run/ffmpeg.pid
start program = "/etc/init.d/iptv/thisBashScript start"
stop program = "/etc/init.d/iptv/thisBashScript stop"
あなたはそれが起動に失敗した知ってどうすればよいですか? monitデバッグのヒントについては、これらを確認してください:http://stackoverflow.com/questions/3356476/debugging-monit、https://mmonit.com/wiki/Monit/FAQ#execution – dekkard