为什么我可以 执行, cron 没法执行 bash 脚本?

发布于 2022-09-04 17:50:26 字数 851 浏览 17 评论 0

问题:我可以以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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

多情癖 2022-09-11 17:50:26

cron的环境变量和系统的用是不一样的,具体可以去搜搜资料。

你把脚本里的pm2cnpm改成绝对路径,比如/usr/bin/cnpm 就可以了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文