我已设置Mac启动来运行此监视脚本:
set daemon 60
set logfile /var/log/monit.log
check host ac_server with address 127.0.0.1
if failed port 3000
then exec "/bin/bash -c '/Users/liren/ac-project/monit_task.sh'"
基本上每隔60秒,它将ping我的Ruby on Rails服务器并在服务器关闭时执行monit_task.sh
脚本:
#!/bin/bash
cd "/Users/liren/ac-project/rails_app"
bundle exec "sidekiq -C config/sidekiq.yml" &
rails s -e production
监视脚本位于/usr/local/etc/monit/monitrc
,由我的LaunchDaemon plist执行,位于/Library/LaunchDaemons/
。
但是,如果没有在日志中显示任何错误,就不会执行shell脚本。知道为什么吗?
答案 0 :(得分:0)
尝试运行:
type bundle
type rails
查找使用这些命令时实际正在运行的内容。然后将您发现的完整路径放入脚本中。
#!/bin/bash
cd "/Users/liren/ac-project/rails_app"
/full/path/to/bundle exec "sidekiq -C config/sidekiq.yml" &
/full/path/to/rails s -e production
答案 1 :(得分:0)
您可以简单地保留当前脚本,而无需修改和添加完整路径,而只需在monitrc中编辑一些小内容(无论是linux还是mac,都没有关系):这是我的answer
编辑:不要忘记 chmod + x monit_task.sh