![从 cron 脚本运行时未找到“/usr/bin/env bash”](https://linux22.com/image/1351354/%E4%BB%8E%20cron%20%E8%84%9A%E6%9C%AC%E8%BF%90%E8%A1%8C%E6%97%B6%E6%9C%AA%E6%89%BE%E5%88%B0%E2%80%9C%2Fusr%2Fbin%2Fenv%20bash%E2%80%9D.png)
我的 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