如何从root监控程序执行Shell脚本(Mac)

时间:2018-07-02 07:49:18

标签: shell daemon monit

我已设置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脚本。知道为什么吗?

2 个答案:

答案 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