如何从 root monit (Mac) 执行 shell 脚本
How to exec a shell script from root monit (Mac)
我已经将 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 秒,它会在 Rails 服务器上 ping 我的 Ruby 并在服务器关闭时执行 monit_task.sh
脚本:
#!/bin/bash
cd "/Users/liren/ac-project/rails_app"
bundle exec "sidekiq -C config/sidekiq.yml" &
rails s -e production
monit 脚本位于 /usr/local/etc/monit/monitrc
,由位于 /Library/LaunchDaemons/
.
的 LaunchDaemon plist 执行
但是,shell 脚本不会在日志中显示任何错误的情况下执行。知道为什么吗?
尝试 运行宁:
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
您可以简单地保留当前脚本而不修改和添加完整路径,只需在 monitrc 中编辑一些小的东西(无论是 linux 还是 mac):这是我的
编辑:不要忘记 chmod +x monit_task.sh
我已经将 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 秒,它会在 Rails 服务器上 ping 我的 Ruby 并在服务器关闭时执行 monit_task.sh
脚本:
#!/bin/bash
cd "/Users/liren/ac-project/rails_app"
bundle exec "sidekiq -C config/sidekiq.yml" &
rails s -e production
monit 脚本位于 /usr/local/etc/monit/monitrc
,由位于 /Library/LaunchDaemons/
.
但是,shell 脚本不会在日志中显示任何错误的情况下执行。知道为什么吗?
尝试 运行宁:
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
您可以简单地保留当前脚本而不修改和添加完整路径,只需在 monitrc 中编辑一些小的东西(无论是 linux 还是 mac):这是我的
编辑:不要忘记 chmod +x monit_task.sh