Cron 正在运行并执行作业,但不会输出到 .log 文件

Cron 正在运行并执行作业,但不会输出到 .log 文件

我意识到网站上有很多关于 cron 的问题,我花了整整一个小时寻找解决方案,但一直没能找到。本质上 cron 作业确实执行了,但它似乎没有执行,或者至少没有将输出输出到我指定的文件中。

我可以看到 cron 正在运行:

josh@lin-ldn-cen:~$ pgrep cron
734

cron 作业成功执行,如我的 /var/log/cron 文件中所示:

Sep 26 08:34:01 lin-ldn-cen CROND[82848]: (josh) CMD (/home/josh/test_script.sh > /home/josh/cron_logs/test.log)

我在 crontab 文件中使用了绝对路径并设置了 PATH。我在 crontab 文件的末尾添加了一个换行符:

josh@lin-ldn-cen:~$ crontab -l
SHELL=/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin

0 */6 * * * /home/josh/youtube-downloads/download_djdj.sh > /home/josh/cron_logs/cron_download_djdj.log
*/5 * * * * /home/josh/youtube-downloads/download_djdj.sh 2>&1 /home/josh/cron_logs/cron_download_djdj.log
* * * * * /home/josh/test_script.sh > /home/josh/cron_logs/test.log

(将路径放在顶部对我的脚本的执行没有任何影响)

test_script.sh 非常简单,我也在其中使用了绝对路径 - 它如下:

josh@lin-ldn-cen:~$ cat test_script.sh
#!/bin/bash/

/usr/bin/echo Hello world

我还尝试了其他几种方法 - 包括.在 crontab 文件中的脚本前添加一个,使用 2>&1 输出错误,仔细检查路径,使用 chmod +x test_script.sh 仔细检查 .sh 文件是否可执行,在 crontab 文件中的命令前同时包含 sh 和 bash - 这些似乎都不起作用。我所期望的只是在 /home/josh/cron_logs/test.log 中看到“Hello world”。

编辑:我想补充一下,这是在 Debian 上,而不是 Ubuntu 上。抱歉。

答案1

从那时起,我意识到 .sh 文件正在执行 - 只是输出没有执行。

我通过SHELL=/usr/bin/bash在 crontab 的顶部添加并更改相关行以使用 &>> 输出到日志文件来解决了此问题:

* * * * * /home/josh/test_script.sh &>> /home/josh/cron_logs/test.log

归功于这个答案- 当我意识到问题出在我的命令的输出到文件段时,我找到了它。

相关内容