2016-03-21 13 views
1

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" 
+0

あなたはそれが起動に失敗した知ってどうすればよいですか? monitデバッグのヒントについては、これらを確認してください:http://stackoverflow.com/questions/3356476/debugging-monit、https://mmonit.com/wiki/Monit/FAQ#execution – dekkard

答えて

0

ある問題がシンボリックリンクを作成することによって解決された:

ln -s /opt/intel/mediasdk/lib64/iHD_drv_video.so /usr/local/lib/dri/i965_drv_video.so 
関連する問題