Crontab 无法找到安装在本地用户的 bin 目录中的程序

Crontab 无法找到安装在本地用户的 bin 目录中的程序

我正在尝试在 Dreamhost 帐户上运行执行某些备份操作的 bash 脚本。我用来执行备份的程序安装在 下的 Web 托管帐户主目录中~/usr/local/bin/。该路径导出到我的.bashrc.bash_profile文件中。当我从 bash 命令行运行脚本时,一切顺利。

但是,当我使用以下命令为用户在 crontab 中安装脚本时:

crontab -e -u <user>

crontab 日志报告说我用来执行备份的程序无法找到。我已使用 进行检查whoami,发现 crontab 实际上是以 的身份运行的,因此我不确定为什么它无法找到该程序的二进制文件。有什么想法吗?

答案1

Dreamhost 似乎有一个针对 crontab 的特殊有限执行环境。参考这一页dreamhosts wiki 关于crontab的执行环境:

“出于安全考虑,DreamHost cron 不会在正常环境下执行。”

“PATH 环境变量只是 /usr/bin:/bin,SHELL 设置为 /bin/sh。您必须指定默认 PATH 中没有的所有命令的完整路径,并且始终指定文件的完整路径。”

(源链接中有更多文本和示例,我只复制/粘贴了最相关的句子。)

相关内容