【问题标题】:Shell Crontab not working壳牌 crontab 不工作
【发布时间】:2013-01-02 01:04:20
【问题描述】:

GNU nano 2.0.9 文件:/tmp/crontab.XXXXzBQgwS

*/5 * * * * ~/check_phpfpm.sh
*/5 * * * * ~/check_nginx.sh
*/5 * * * * ~/disk-clean.sh
*/5 * * * * ~/loadcheck.sh

我的代码应该每 5 分钟运行一次。但它没有运行

[root@4D13 ~]# ls -l
total 756
-rw-------. 1 root root   1688 Dec 18 09:45 anaconda-ks.cfg
-rwxrwxrwx  1 root root    139 Dec 28 18:18 check_nginx.sh
-rwxrwxrwx  1 root root    140 Dec 28 18:19 check_phpfpm.sh
-rwxrwxrwx  1 root root    456 Dec 28 18:18 disk-clean.sh
-rw-r--r--. 1 root root  15469 Dec 18 09:45 install.log
-rw-r--r--. 1 root root   5267 Dec 18 09:44 install.log.syslog
-rwxrwxrwx  1 root root    503 Dec 19 19:26 loadcheck.sh
drwxr-xr-x  9 1001 1001   4096 Dec 18 11:08 nginx-1.3.2
-rw-r--r--  1 root root 722119 Jun 26  2012 nginx-1.3.2.tar.gz
[root@4D13 ~]#

它应该运行 ~/check_phpfpm.sh 作为我的代码,如果我手动运行它会工作

[root@4D13 ~]#
[root@4D13 ~]# ~/check_phpfpm.sh
Stopping php-fpm:                                          [FAILED]
Starting php-fpm:                                          [  OK  ]

关于 check_phpfpm 的更多信息,它是一个检查服务 php-fpm 是否正在运行的脚本,如果它不工作,它将执行并重新启动 php-fpm,但问题是如果我手动运行它的工作。但是 crontab 没有重新启动,服务器 php-fpm 崩溃并进入停止模式,但是这个脚本没有重新启动,我的 crontab 应该每 5 分钟执行一次脚本来检查。

我的 crontab 设置有什么问题?感谢大家的帮助

【问题讨论】:

  • Cron 通常会向您发送有关其输出的电子邮件。您可以使用本地系统上的邮件查看您的电子邮件吗?
  • 为什么不直接查看 /var/log 中的日志文件?
  • 两个常见问题:未设置环境(PATH 等)或未使用预期的 shell...在 cron 下两者的默认值都非常小。从命令行运行但不在 cron 下运行是这种情况的典型症状。快速测试: */5 * * * * 。 ~/.profile && your_command
  • 不要对 cronjobs 中的当前目录或 PATH 设置做任何假设。相反,明确地设置它们。另外:我认为波浪号不会被扩展,请使用显式路径(例如 /home/root/myscript.sh )
  • 谁的 crontab 是谁运行的?我看到日志文件是由 root 拥有的,所以在 crontab 中,~ 是什么?

标签: shell cron


【解决方案1】:

首先确保你的脚本是可执行的:

chmod u+x name_of_script

现在将它添加到 crontab:

crontab -e

还要确保您在 crontab 中写入完整路径,例如:

*/5 * * * * /home/user/loadcheck.sh

【讨论】:

  • crontab -e(编辑你的 crontab)可以工作,但我个人从不使用它。我将我的 crontab 文件保存在源代码控制系统中,并使用 crontab filename 来安装它。这样可以避免丢失信息,并且更容易从错误中恢复。
【解决方案2】:

您确定 CRON 服务正在触发吗?也许它甚至没有运行。

根据您的发行版,您可以检查它是否使用类似...的东西运行它

# service crond status

如果它正在运行,并且您的脚本未触发,则可能存在权限或位置问题。你可以通过 CRON 使用 ~ 吗?例如,也许可以尝试将脚本的绝对路径放在 /home/user/check_phpfpm.sh 中。

如果您从 CRON 收到错误消息,请检查您的 CRON 日志,可能位于 /var/log/cron 或类似位置,或者通过在您的 CRONTAB 的第一行添加以下内容将 CRON 输出通过电子邮件发送给您。 ..

MAILTO="you@whatever.com"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2011-12-21
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 2015-05-26
    相关资源
    最近更新 更多