После некоторых исследований выяснилось, что даже если я смогу найти некоторые разговоры о несколько действий при перезапуске службы также кажется невозможным достичь:
if failed port 80 and protocol http
then exec /home/sweet/script.pl
and restart
При объявлении команды перезапуска для службы в monitrc
файл конфигурации, можно ли попробовать что-то вроде этого:
restart program = "perl /home/sweet/crazy-stuff.pl && /etc/init.d/server restart"
Так как monit -t
не упоминайте ни одной ошибки, которую я предпочитаю спросить, прежде чем делать плохие вещи
Вы должны использовать exec и подоболочку bash, например:
exec "/bin/bash -c '/etc/init.d/server restart && perl /home/sweet/script.pl'"
Однако передовой опыт рекомендует использовать один сценарий для всех ваших действий (то есть включить команду init.d restart в сценарий оболочки).
как насчет этого формата
blabla... exec "/bin/sh -c 'foo=$(mktemp) && tee $foo <<-EOF
# create the bash script then execute it
/etc/init.d/server restart
perl /home/sweet/script.pl
# and any other commands as you wish
EOF
/bin/bash $foo'"
если вы хотите автоматическое удаление, добавьте /bin/rm $foo
после /bin/bash $foo
...
EOF
/bin/bash $foo; /bin/rm $foo'"