Configuration
Monit 和多個操作:在 Monit 重啟命令中連結命令?
經過一些研究,即使我能找到一些關於重啟服務時的多個操作的討論,也似乎不太可能實現:
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 子shell,例如:
exec "/bin/bash -c '/etc/init.d/server restart && perl /home/sweet/script.pl'"
但是,最佳實踐建議對所有操作使用單個腳本(這意味著將 init.d restart 命令包含到您的 shell 腳本中。)
這個格式怎麼樣
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'"