为什么我可以 执行, cron 没法执行 bash 脚本?
问题:我可以以root身份通过terminal去执行 cd ~/aaa && sh ./bin/a.sh ,且成功。
但是,crontab 却无法执行 cd ~/aaa && sh ./bin/a.sh
a.sh 脚本如下:
git fetch
git checkout stable
git pull | grep Already
if [ "$?" = 0 ]; then
echo 'no'
else
pm2 kill
rm -r ./build
cnpm install
......
fi
crontab 如下:
*/10 * * * * cd ~/aaa && sh bin/a.sh >> /tmp/crontab.log 2>&1
crontab 抓的错误log 如下:
Your branch is behind 'origin/stable' by 1 commit, and can be fast-forwarded.
(use "git pull" to update your local branch)
bin/a.sh: 7: bin/a.sh: pm2: not found
bin/a.sh: 9: bin/a.sh: cnpm: not found
module.js:471
throw err;
^
Error: Cannot find module
我看了下报错日志,说是pm2 , cnpm 没有找到。但是我可以在 terminal 下直接输入pm2 去执行的啊,难道cron不可以做到吗?求解
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
cron
的环境变量和系统的用是不一样的,具体可以去搜搜资料。你把脚本里的
pm2
和cnpm
改成绝对路径,比如/usr/bin/cnpm
就可以了。推荐这个crontab执行不了的解决方法