经过一番研究,我发现即使我能找到一些关于多个动作重新启动服务时,似乎也无法实现:
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
不要提及任何错误,所以我宁愿在做坏事之前先问一下。
答案1
您应该使用 exec 和 bash 子shell,例如:
exec "/bin/bash -c '/etc/init.d/server restart && perl /home/sweet/script.pl'"
但是,最佳实践建议对所有操作使用单个脚本(即将 init.d restart 命令包含到您的 shell 脚本中。)
答案2
这种格式怎么样
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'"