尽管所有设置均正确,但 Cron 任务不会运行

尽管所有设置均正确,但 Cron 任务不会运行

这个 cron tqsk 不起作用:

[main_usr@localhost ~]$ sudo crontab -l  -u root
0 * * * * /home/main_usr/cron_test1.sh > /home/main_usr/cron_test1_out.sh.out 2>&1

[main_usr@localhost ~]$ 

$ ls -al cron_test1.sh
-rwxr-xr-x 1 main_usr main_usr 293 Apr  8 05:12 cron_test1.sh

正如您所看到的,cron 任务中有一个新行。并且该文件存在并且可执行。该任务是一天前创建的。它应该每小时运行一次。尽管如此,“cron_test1_out.sh.out”尚未创建。

为什么?

答案1

Cron 任务使用 /bin/sh 和空白环境运行,因此有时您可能需要获取 bash 配置文件或其他一些环境文件,或者可以选择在 cron 文件中包含环境变量。 PATH 通常是最大的罪犯。默认情况下,路径设置为 /usr/bin:/bin,因此如果您的脚本引用了不在这两个目录中且没有完整路径的任何可执行文件,您的 cron 将失败。您可以使用简单的 KEY=VALUE 在 crontab 中设置任何环境变量,例如

PATH=/usr/bin:/bin:/usr/local/bin

答案2

我前段时间也遇到过同样的问题。

添加 /bin/bash 为我解决了这个问题。

例子:

0 * * * * /bin/bash /path_to_your_script/script.sh > /output_directory

原因:运行 shell 脚本时,您必须定义应在何处执行脚本,因此您可能必须使用 /bin/sh、/bin/zsh 或其他任何位置来运行脚本。

Cron 本身并不知道在哪里运行脚本。

另请检查 /var/log/syslog 和 /var/mail/root 以查看原因。

相关内容