我无法从 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
最佳答案
我在这里看到两个问题:
您需要在脚本或 cron 作业中进行 cd。 Cron 在您的主目录中运行命令。您可以回显“$PWD”进行确认。
您需要指定 docker-compose 可执行路径(运行“which 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!"
关于linux - 无法在 crontab 中运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52309925/