Monit 由于某种原因忽略管道

Monit 由于某种原因忽略管道

我有 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 &

相关内容