我正在尝试使用 monit 来监视 backgroundrb 进程(偶尔会被终止),但似乎无法让启动或停止命令起作用(我只是得到“执行失败”) - 尽管它们在命令提示符下可以正常工作。
我没有做什么特别复杂的事情:
check process backgroundrb_11006
with pidfile "/home/user/site/tmp/pids/backgroundrb_11006.pid"
start = "/usr/bin/ruby /home/user/site/script/backgroundrb start"
stop = "/usr/bin/ruby /home/user/site/script/backgroundrb stop"
if cpu > 90% for 2 cycles then restart
if totalmem > 512 MB for 2 cycles then restart
if 4 restarts within 4 cycles then timeout
group backgroundrb
我为我的一些宝石(如数据包(/home/user/.gem/ruby/1.8/bin))设置了自定义位置,我怀疑问题的一部分在于 monit 使用了 spartan PATH(引用http://mmonit.com/monit/documentation/monit.html- PATH=/bin:/usr/bin:/sbin:/usr/sbin),导致这些 gem 无法访问。另外,我在 backgroundrb 调试日志中没有看到任何错误。
我很乐意听取任何人的意见,他们知道如何调整 backgroundrb(或我的启动/停止命令)以使其正常工作。
干杯,沃恩。
答案1
您可以使用正确的路径设置制作自定义的启动/停止脚本,然后将这些脚本与 monit 一起使用。
非常简单的启动脚本(backgroundrb_monit_start)
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/add/your/other/paths
GEM_HOME=/home/mygemrepository
/usr/bin/ruby /home/user/site/script/backgroundrb start
并监控配置:
start = "/usr/bin/ruby /home/user/site/script/backgroundrb_monit_start"