Monitは何らかの理由でパイプを無視します。

Monitは何らかの理由でパイプを無視します。

TVヘッドエンドサービスを監視するMonitスクリプトがあります。プログラムを起動するには、スタートコマンドを使用したいと思います。

start program = "/etc/init.d/tvheadend start 
    && /usr/bin/python /root/antik_epg/antik_xmltv.py
    | /usr/bin/socat - UNIX-CONNECT:/etc/tvheadend/epggrab/xmltv.sock"

しかし、何らかの理由で Monit はパイプに続くコマンドを無視します。ただ起きてtvheadend実行されます/usr/bin/python /root/antik_epg/antik_xmltv.py

それは実行されません/usr/bin/socat - UNIX-CONNECT:/etc/tvheadend/epggrab/xmltv.sock

すべてのコマンドを実行するには?カスタムスクリプトを実行しようとしています。

start program = "/bin/ash -c '/root/tvheadend_start.sh'"

しかし、結果は同じです。

このコマンドは bash から直接完全に実行されます。

ご協力ありがとうございます。

答え1

解決策が見つかりました。私はネームドパイプの代わりにネームドパイプを使用しました。

start program = "/bin/ash -c /root/tvheadend_start.sh"

/root/tvheadend_start.shスクリプトから:

#!/bin/sh    
/etc/init.d/tvheadend start
/usr/bin/python /root/antik_epg/antik_xmltv.py > /root/pipe &
/usr/bin/socat - UNIX-CONNECT:/etc/tvheadend/epggrab/xmltv.sock < /root/pipe &

関連情報