首页 文章

Cronjob无法运行bash脚本,发出错误“aws:command not found”

提问于
浏览
0

我有一个脚本在.sh文件中使Amazon CloudFront无效,当我使用bash(bash /../filename.sh)运行它时它可以正常工作 . 我需要在每个星期四使我的发行版无效,所以我写了一个cron作业,但它给出了错误“ aws: command not found ” .

这是我的cron工作45 10 * * 2 / usr / bin / bash /var/www/cms/file.sh我缺少什么?当bash可以运行脚本时,为什么cron作业失败?

1 回答

  • 0

    这是因为您的系统依赖于环境变量来搜索可执行文件的位置,并且该变量未在cron会话中设置 . 此变量名为 $PATH . 只需在终端中键入 echo $PATH ,即可在当前会话中查看其内容 .

    为要执行的作业启动cron会话时,不会设置此变量 .

    要解决这个问题,有几种方法:

    方法1:

    在shell脚本中使用完整路径名,并且不依赖于PATH变量来查找可执行文件 .


    方法2:

    在脚本的开头添加以下内容(根据需要进行调整):

    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    

    方法3:

    (通常不鼓励这种方法)

    在crontab中添加以下行(如果需要,调整):

    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    

    您可以在终端中执行 echo $PATH 并将输出复制到crontab中的上述变量中 .

相关问题