找不到从 cronjob 命令运行的 bash 脚本

Posted

技术标签:

【中文标题】找不到从 cronjob 命令运行的 bash 脚本【英文标题】:bash script running from cronjob command not found 【发布时间】:2012-04-12 08:40:55 【问题描述】:

我的crontab如下:

SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 主页=/ 01 04 * * * 根 /home/sphinx_scripts/daily_update_index.sh

daily_update_index.sh 如下:

索引器--旋转 xxx

现在,如果我从任何地方(以 root 身份)运行 /home/sphinx_scripts/daily_update_index.sh,它工作正常。但是我每天都会收到来自 cron 工作的电子邮件,说“找不到命令索引器”。索引器的完整路径是 /usr/loca/bin/indexer。为什么会出现这样的错误?

【问题讨论】:

【参考方案1】:

问题是索引器不在路径上。你说它是 /usr/local/bin/indexer 并且你有 PATH=/sbin:/bin:/usr/sbin:/usr/bin 为了解决这个问题,我会将索引器的整个路径放在 daily_update_index.sh 中,或者将 /usr/local/bin 添加到 daily_update_index.sh 中的路径

【讨论】:

【参考方案2】:

我正在使用 AWS EC2 实例,对我来说,问题是我使用 pscp 从我的 Windows 10 机器传输我的 .sh 文件,并且文件的行结尾不兼容。于是我用sudo apt-get install dos2unix,然后用dos2unix把文件转换成正确的格式。

【讨论】:

以上是关于找不到从 cronjob 命令运行的 bash 脚本的主要内容,如果未能解决你的问题,请参考以下文章

无法从 WSL bash 中的批处理文件运行 Homebrew 应用程序(找不到命令)

通过桌面图标运行 bash 脚本时找不到节点命令

-bash:iTMSTransporter:找不到命令

Bash 脚本在空行上打印“找不到命令”

Docker /bin/bash: nodemon: 找不到命令

使用 git bash 运行 bash 脚本时出现“找不到免费命令”