![Crontab 无法找到安装在本地用户的 bin 目录中的程序](https://linux22.com/image/1426425/Crontab%20%E6%97%A0%E6%B3%95%E6%89%BE%E5%88%B0%E5%AE%89%E8%A3%85%E5%9C%A8%E6%9C%AC%E5%9C%B0%E7%94%A8%E6%88%B7%E7%9A%84%20bin%20%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E7%A8%8B%E5%BA%8F.png)
我正在尝试在 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 中没有的所有命令的完整路径,并且始终指定文件的完整路径。”
(源链接中有更多文本和示例,我只复制/粘贴了最相关的句子。)