无法在crontab中运行Shell脚本

时间:2018-09-13 08:46:21

标签: linux bash shell cron sh

我无法使脚本从crontab成功执行。 手动执行脚本后,它可以正常工作。当添加到crontab时,它会显示错误。

按以下方式手动执行脚本时,一切正常:

cd /home/admin/git/Repo
./lunchpad2.sh

脚本如下添加到crontab中:

sudo crontab -e
30 13 * * * /home/admin/git/Repo/lunchpad2.sh > /home/admin/git/Repo/outcome.err

lunchpad2.sh设置了744个权限;

脚本本身:

    #!/bin/bash -p
    PATH=$PATH:/home/admin/git/Repo

    echo "--> Starting!"

    echo "--> Stopping docker"
    docker-compose down

    echo "--> Switching files"
    mv dc_conf_standby.py dc_conf_aboutready.py 
    mv dc_conf.py dc_conf_standby.py 
    mv dc_conf_aboutready.py dc_conf.py 

    echo "--> Building docker"
    docker-compose up -d --build

    echo "--> Completed!"

生成的错误:

/home/admin/git/Repo/lunchpad2.sh: line 7: docker-compose: command not found
mv: cannot stat ‘dc_conf_standby.py’: No such file or directory
mv: cannot stat ‘dc_conf.py’: No such file or directory
mv: cannot stat ‘dc_conf_aboutready.py’: No such file or directory
/home/admin/git/Repo/lunchpad2.sh: line 15: docker-compose: command not found

1 个答案:

答案 0 :(得分:2)

我在这里看到两个问题:

  1. 您需要在脚本或cron作业中使用cd。 Cron在您的主目录中运行命令。您可以回显“ $ PWD”进行确认。

  2. 您需要指定docker-compose可执行文件路径(运行“哪个docker-compose”进行确认)

    #!/bin/bash -p
    cd /home/admin/git/Repo
    
    echo "--> Starting!"
    
    echo "--> Stopping docker"
    /usr/bin/docker-compose down
    
    echo "--> Switching files"
    mv dc_conf_standby.py dc_conf_aboutready.py 
    mv dc_conf.py dc_conf_standby.py 
    mv dc_conf_aboutready.py dc_conf.py 
    
    echo "--> Building docker"
    /usr/bin/docker-compose up -d --build
    
    echo "--> Completed!"