我的 crontab 中有这个:
PATH=/usr/bin:/usr/local/bin:$PATH
*/1 * * * * /usr/bin/env bash > ~/cron.log 2>&1
输出cron.log
如下:
/usr/bin/env bash: No such file or directory
/usr/bin/env
以及/bin/bash
两者都存在。我还可以从此 crontab 所属的同一用户运行此命令,没有任何错误。我还尝试添加
SHELL=/bin/bash
到 crontab 的顶部。没有效果。不知道发生了什么。还有这个:
*/1 * * * * which bash > ~/cron.log 2>&1
日志文件中什么都没显示。这是我在 crontab 中为该用户保存的所有内容,没有其他内容。
答案1
由于运行的脚本以(cron
开头#!/usr/bin/env bash
正确的?),您需要做的就是crontab
:
*/1 * * * * /path/to/script > ~/cron.log 2>&1
并确保脚本确实输出了一些东西;如果你的脚本完全没有输出,那么你的日志文件将要为空。
答案2
事实证明我不应该写这句话:
PATH=/usr/bin:/usr/local/bin:$PATH
从 crontab 中删除它可以解决问题。
答案3
我不确定你到底想做什么,但对我来说:
# which bash
/bin/bash
因此尝试
/usr/bin/env /bin/bash /path/to/some/script > ~/cron.log 2>&1