手动执行脚本正常,cron 里就是不工作。日志里啥也没有。

原因:cron 的环境跟登录 shell 完全不同。PATH 只有 /usr/bin:/bin,脚本里用了 node、python3 之类的,找不到。

解法:

  1. 脚本里全用绝对路径
  2. 或者在 crontab 顶部设 PATH
  3. 输出重定向到日志文件,不然报错你看不到

第三个最关键。cron 默认把输出发邮件,机器上没配邮件就等于扔了。

我的模板:
PATH=/usr/local/bin:/usr/bin:/bin
/5 * /path/script.sh >> /var/log/script.log 2>&1

加上 2>&1 之后,问题基本都能自己看出来。

主楼