我正在尝试在 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 中没有的所有命令的完整路径,并且始终指定文件的完整路径。”
(源链接中有更多文本和示例,我只复制/粘贴了最相关的句子。)