Как выполнить сценарий оболочки из root monit (Mac) - PullRequest
0 голосов
/ 02 июля 2018

Я настроил launchd моего Mac для запуска этого скрипта monit:

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 с, он пингует мой сервер 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

Скрипт

monit находится в /usr/local/etc/monit/monitrc, выполняется моим списком LaunchDaemon, расположенным в /Library/LaunchDaemons/.

Однако скрипт оболочки просто не запускается без ошибок, отображаемых в журнале. Есть идеи почему?

Ответы [ 2 ]

0 голосов
/ 14 августа 2018

Вы можете просто сохранить свой текущий скрипт, не изменяя и не добавляя полный путь, и просто отредактировать что-то маленькое в monitrc (не важно, Linux это или Mac): вот мой ответ

редактировать: не забудьте chmod + x monit_task.sh

0 голосов
/ 02 июля 2018

Попробуйте запустить:

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
...