使用 /usr/bin/env 使 cronjob 失败

使用 /usr/bin/env 使 cronjob 失败

我有一个脚本,如果我从命令行手动执行它,它会完美运行。但是,当它通过 cron 运行时,作业会失败并出现以下错误:

/usr/bin/env:escript:没有此文件或目录

脚本的第一行是:

#!/usr/bin/env escript

我唯一能想到的就是没有找到 escript,这是因为它没有安装在 /usr/bin 中,而是安装在用户主目录的子目录中。

我对 cron 的理解(也许是误解)是,cron 在用户的 UID/GID 下运行用户 crontab 中的每个作业。它是否也不应该从用户那里继承 PATH 变量?是否必须将所有内容指定为绝对路径?

答案1

Cron 在用户的 UID 下运行,但具有最小值PATH。您的脚本需要使用解释器 (escript) 的完整路径,或者您需要PATH在 crontab 中设置。

答案2

cron 不会从用户的交互式设置中继承 PATH。PATH 设置为“/usr/bin:/bin”

您可以在 crontab 行上设置环境变量

有关详细信息,请参阅 man crontab,例如男人crontab

相关内容