我运行的是 14.04 Ubuntu 服务器。我想自动接收 Monit 电子邮件警报。/usr/bin/monitcron.sh
以 root 身份输入所有手动操作都可以正常工作。我尝试使用 Rsync 进行 cron 测试。Cron 运行良好。但是,一旦我将其用于 Monit,它就不再工作了,除非我手动运行它。
在我的 monitcron.sh 脚本中,有:
#!/bin/bash
service monit reload
编辑:我试过了/etc/init.d/monit reload
。还是一样。手动操作有效,但 cron 无效。
在我的中crontab -e -u root
,我尝试运行:
* * * * * /usr/bin/monitcron.sh
但没有运气。
有什么想法或理由说明为什么该脚本适用于 Rsync 而不适用于 Monit?谢谢。
编辑:我的/var/log/syslog
节目:
Feb 20 21:42:01 www postfix/local[5289]: A7F742490E: to=<[email protected]>, orig_to=<root>, relay=local, delay=0.13, delays=0.09/0/0/0.03, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Feb 20 21:42:01 www postfix/qmgr[1151]: A7F742490E: removed
Feb 20 21:43:01 www CRON[6074]: (root) CMD (/usr/bin/monitcron.sh)
Feb 20 21:43:01 www postfix/pickup[6069]: B71782490E: uid=0 from=<root>
Feb 20 21:43:01 www postfix/cleanup[5111]: B71782490E: message-id=<[email protected]>
Feb 20 21:43:01 www postfix/qmgr[1151]: B71782490E: from=<[email protected]>, size=603, nrcpt=1 (queue active)
Feb 20 21:43:01 www postfix/local[5289]: B71782490E: to=<[email protected]>, orig_to=<root>, relay=local, delay=0.12, delays=0.05/0/0/0.07, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Feb 20 21:43:01 www postfix/qmgr[1151]: B71782490E: removed
Feb 20 21:44:01 www CRON[6085]: (root) CMD (/usr/bin/monitcron.sh)
Feb 20 21:44:01 www postfix/pickup[6069]: C79642490E: uid=0 from=<root>
Feb 20 21:44:01 www postfix/cleanup[5111]: C79642490E: message-id=<[email protected]>
Feb 20 21:44:01 www postfix/qmgr[1151]: C79642490E: from=<[email protected]>, size=603, nrcpt=1 (queue active)
Feb 20 21:44:01 www postfix/local[5289]: C79642490E: to=<[email protected]>, orig_to=<root>, relay=local, delay=0.13, delays=0.06/0/0/0.07, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Feb 20 21:44:01 www postfix/qmgr[1151]: C79642490E: removed
Feb 20 21:45:01 www CRON[6097]: (root) CMD (/usr/bin/monitcron.sh)
Feb 20 21:45:01 www postfix/pickup[6069]: D64EA2490E: uid=0 from=<root>
Feb 20 21:45:01 www postfix/cleanup[5111]: D64EA2490E: message-id=<[email protected]>
Feb 20 21:45:01 www postfix/qmgr[1151]: D64EA2490E: from=<[email protected]>, size=603, nrcpt=1 (queue active)
Feb 20 21:45:01 www postfix/local[5289]: D64EA2490E: to=<[email protected]>, orig_to=<root>, relay=local, delay=0.11, delays=0.04/0/0/0.07, dsn=2.0.0, status=sent (delivered to command: procmail -a "$EXTENSION")
Feb 20 21:45:01 www postfix/qmgr[1151]: D64EA2490E: removed}
编辑: https://www.youtube.com/watch?v=j00517Nq9uo 该视频告诉我,如果我想运行“service apache2 reload”,我的脚本应该存储在 /var/www/ 中。这样就行了。之前我试过在 /usr/bin/ 中,但没有成功。现在 Apache2 脚本可以运行了,问题仍然存在:Monit 脚本(“service monit reload”)应该从哪里运行/存储在哪里?
问题修复:我确信这是路径问题。我在脚本中添加了以下路径:#!/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin service monit reload
我在这里找到了解决方案:https://unix.stackexchange.com/questions/180342/running-init-d-script-produces-start-stop-daemon-not-found
感谢 Ben Whaley 的贡献以及他团队的鼎力帮助。