我有一个执行以下操作的监视脚本:
check process sidekiq_1 with pidfile /tmp/pids/sidekiq_1.pid
start program = "/bin/bash -l -c 'bundle exec sidekiq start" as uid jim and gid jim with timeout 250 seconds
stop program = "/bin/bash -l -c 'bundle exec sidekiq stop" as uid jim and gid jim with timeout 120 seconds
if cpu usage > 25% for 18 cycles then restart
if mem > 1500.0 MB for 18 cycles then restart
这很好,但是我需要根据触发器文件的存在来进行有条件的检查,如下所示:
如果文件 /tmp/do_not_start_sidekiq.txt 不存在,则仅执行检查(启动进程)。
通过这种方式,touch /tmp/do_not_start_sidekiq.txt
如果我想关闭进程并且不让 monit 再次启动它们,我可以做一个,直到我做一个rm /tmp/do_not_start_sidekiq.txt
我将如何更改此监视脚本以获取该行为?
使用 monit 处理此问题的正确方法是“取消监控”该过程......
一个例子:
不会尝试重新启动或报告进程问题。
您可以通过以下方式恢复对支票的监控:
这些也可以由 cron 分组或启动。一个好的实际部署可能会在工作时间监控应用程序,而在停机窗口期间不受监控,由 cron...
编辑:
如果您需要非特权用户来控制此行为,您可以利用命令
/etc/sudoers
条目monit unmonitor/monitor
。就像是:
将允许您的非特权用户 jim 运行该特定命令。