Я хотел бы знать, можно ли добавить задержку между методами остановки / запуска. В основном это связано с тем, что требуется задержка не менее 10 секунд для закрытия всех открытых соединений сокетов и корректного закрытия серверного сокета для повторного запуска.
Это мой сценарий мониторинга
set logfile /var/log/monit.log
check process test.sh with pidfile /home/svcs/test/pid/app.pid
start program = "/etc/init.d/test.sh start" with timeout 60 seconds
stop program = "/etc/init.d/test.sh stop" with timeout 60 seconds
if failed host xx.xx.com port 443
type tcpSSL protocol http with timeout 15 seconds retry 3 then restart
alert xx@xx.com
Спасибо
Команда
sleep
за которым следует значение в секундах.
Так что добавьте sleep 10
между строк, и это должно сработать.
Обратите внимание, что на solaris это должно быть целое число; на общем linux десятичные числа тоже работают (можно поставить 10.15 или еще что).
Пример:
start program = "/bin/sleep 90; /etc/init.d/apache2 start" with timeout 110 seconds
/bin/sleep
это то, что вы хотите.
Вы также можете указать один сценарий оболочки вместо того, что для этого в кавычках:
start program = "/home/user/scripts/my_custom_start.sh" with timeout 110 seconds
my_custom_start.sh:
#!/bin/sh
/bin/sleep 90
/etc/init.d/apache2 start
Если вы используете сценарий таким образом, не забудьте указать свой интерпретатор: #!/bin/sh
(или что-то еще) в соответствии с документацией и правильными разрешениями. Затем просто добавьте оператор сна в сценарий оболочки там, где он вам нужен, вместе с вызовами процессов "start". Не забывайте UID / GID, который вы хотите выполнить (при необходимости).
Обратитесь к документации здесь:
https://mmonit.com/monit/documentation/monit.html#SERVICE-METHODS