我有一个 cron 作业,我想记录其输出。cron 文件 ( crontab -e
) 是:
0 7 * * * node $HOME/server/task.js >> $HOME/server/log.txt
cron任务名为:
$ grep CRON /var/log/syslog
Nov 4 07:00:01 ip-... CRON[0000]: (bitnami) CMD (node $HOME/server/task.js >> $HOME/server/task.txt)
Nov 4 07:00:01 ip-... CRON[0000]: (CRON) info (No MTA installed, discarding output)
出现错误的行意味着我未安装电子邮件,但我也不想。
当 NodeJS 任务的第一行使用 时,输出文件为空console.log()
。
我确认 cron 作业没有运行。
我如何调试错误、让 cron 运行并将结果保存到文件中?
答案1
默认情况下,cron 作业的输出将邮寄给你正在执行脚本的用户,这就是为什么未安装 MTA因为您的系统上没有安装任何邮件代理。
您的脚本确实正在执行,如第一行 syslog 所示。此处的问题在于输出未重定向到标准输出。
因此尝试编辑你的 cron 作业:
0 7 * * * node $HOME/server/task.js >> $HOME/server/log.txt 2>&1