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 &