Configuration

Monit 和多個操作:在 Monit 重啟命令中連結命令?

  • November 26, 2019

經過一些研究,即使我能找到一些關於重啟服務時的多個操作的討論,也似乎不太可能實現:

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'"

引用自:https://serverfault.com/questions/610715