为什么我在终端上看不到 cron 作业的输出?

为什么我在终端上看不到 cron 作业的输出?

我正在学习如何使用 crontab,在此过程中,我想做的是在 shell 中打印一些简单的东西。所以我照做了,crontab -e并输入了以下内容

* * * * * bash /etc/test.sh

测试文件

echo $NODE_ENV

现在我希望 cronjob 能将NODE_ENV每一分钟的值打印到 shell 中,但它没有。为什么它不打印?它不应该打印吗,还是我做错了什么?

有些事情我已经尝试过了。

$ ps aux | grep crond    
ubuntu   15438  0.0  0.0  11284   936 pts/1    S+   09:37   0:00 grep --color=auto crond

/var/log没有创建 cron.log 文件,因此无法记录我的作业是否实际运行。

我正在 ubuntu 16.04 中的 Amazon EC2 实例中运行此命令,如果您需要更多输出,请告诉我。

答案1

Cron 不会使用您打开的终端运行命令。它在后台运行作业,并保存输出以邮寄给您(如果您已设置邮件传递)。

如果你想查看 cronjob 的输出,最简单的方法是重定向输出:

* * * * * bash /etc/test.sh >> /some/output/file 2>&1

然后在打开的终端中查看该文件:

tail -f /some/other/file

在 Ubuntu 16.04 及更高版本上,使用 systemd 查看 cron 的日志,请执行以下操作:

journalctl -u cron

cron守护进程只是cron,而不是crond

$ systemctl status cron
● cron.service - Regular background program processing daemon
   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-01-12 19:02:04 IST; 1 weeks 1 days ago
     Docs: man:cron(8)
 Main PID: 1022 (cron)
    Tasks: 1
   Memory: 8.6M
      CPU: 24.967s
   CGroup: /system.slice/cron.service
           └─1022 /usr/sbin/cron -f

相关内容