我有一个我想用monit监控的自定义服务.当进程失败时,我想将日志复制到共享文件系统并重新启动该服务.像下面这样的东西,但我不确定是什么.任何提示将不胜感激.
check process pipeline with pidfile /var/run/pipeline.pid start program = "/sbin/start pipeline" stop program = "/sbin/stop pipeline" if 10 restarts within 10 cycles then timeout # Not sure what to write next if <service has failed> restart and exec "/bin/bash -c 'cp /var/log/upstart/pipeline.log /nfs/logs/`hostname`.`date +'%m-%d-%Y_%H.%M.%S'`.log'"
解决方法
我会写一个包含所需事件动作的小bash脚本.从Monit调用该脚本.
它更清洁,更模块化,行为更可预测.同样的想法适用于cron工作.
例如,从Monit examples page开始,您是否愿意支持这一点:
check directory httpd_core with path /var/crash/core if changed
timestamp then exec “/bin/bash -c ‘if [/bin/cat
!=
/tmp/monit_httpd_core.tmp | head -1/bin/ls
]; then /usr/bin/gdb -x
/var/crash/core/core.httpd* | tail -1
/etc/gdb.batch /usr/sbin/httpd/bin/ls /var/crash/core/core.httpd* |
| mail -s httpd_crash
tail -1 | tee /tmp/monit_httpd_core.tmp
admin@foo.bar webmaster@foo.bar; fi'”
或这个:
check directory httpd_core with path /var/crash/core if changed timestamp then exec script.sh
其中script.sh包含所有的丑陋.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。