У меня проблема с мониторингом программы с использованием monit.monit настаивает на выделении программы, которая работает нормально
Я запускаю это на малиновом пие, построив 5.11 из источника; Я попытался использовать версию из репозиториев, но она была 5.4 и не поддерживала какой-либо синтаксис ниже, который я хочу.
Я пытаюсь выполнить «Q: У меня есть программа, которая не создает свой собственный файл pid. Поскольку monit требует, чтобы все программы имели pid-файл, что мне делать?» entry in the FAQ.
Вот мой start_sensors.sh сценарий (который просто запускает свою программу питона, вместо программы Java в примере вики):
#!/bin/bash
case $1 in
start)
echo $$ > /var/run/start_sensors.pid;
exec 2>&1 /usr/bin/python /home/pi/temperature/post_temps.py 1>/tmp/post_temps.out
;;
stop)
kill `cat /var/run/start_sensors.pid` ;;
*)
echo "usage: start_sensors {start|stop}" ;;
esac
exit 0
Вот мой /etc/monit/monitrc
запись:
# Run temperature sensor monitor
check process start_sensors.sh with pidfile /var/run/start_sensors.pid
start = "/home/pi/temperature/start_sensors.sh start"
stop = "/home/pi/temperature/start_sensors.sh stop"
вывод в журнале мониторинга, выглядит следующим образом:
[EST Jan 24 14:21:16] info : 'raspberrypi' Monit reloaded
[EST Jan 24 14:21:16] error : 'start_sensors.sh' process is not running
[EST Jan 24 14:21:16] info : 'start_sensors.sh' trying to restart
[EST Jan 24 14:21:16] info : 'start_sensors.sh' start: /home/pi/temperature/start_sensors. sh
[EST Jan 24 14:21:46] error : 'start_sensors.sh' failed to start (exit status -1) -- Program /home/pi/temperature/start_sensors.sh timed out
Итак, как вы можете видеть, monit запускает программу, она работает нормально, а затем monit убивает ее через тридцать секунд из-за «таймаута».
Моя программа работает нормально и производит правильный вывод , который я отправляю в файл /tmp/post_temps.out.
Я не понимаю, почему monit выбрал программу изначально ... это должен быть длительный процесс!
Я попытался изменить сценарий start_sensors.sh, чтобы он помещал программу в фоновом режиме (и он записывал свой собственный файл /var/run/start_sensors.pid), но затем monit запускает новый экземпляр каждый тридцать секунд или около того, не останавливая старые, и записывая файл pid. Это похоже на то, что он даже не смотрит файл pid.
СПАСИБО!
ли вы решить эту проблему? – valentt