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

Sar*_*rya 2 bash cron 16.04

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

* * * * * bash /etc/test.sh
Run Code Online (Sandbox Code Playgroud)

测试文件

echo $NODE_ENV
Run Code Online (Sandbox Code Playgroud)

现在我期望 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
Run Code Online (Sandbox Code Playgroud)

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

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

mur*_*uru 6

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

\n\n

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

\n\n
* * * * * bash /etc/test.sh >> /some/output/file 2>&1\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
tail -f /some/other/file\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
journalctl -u cron\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
$ systemctl status cron\n\xe2\x97\x8f cron.service - Regular background program processing daemon\n   Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)\n   Active: active (running) since Thu 2017-01-12 19:02:04 IST; 1 weeks 1 days ago\n     Docs: man:cron(8)\n Main PID: 1022 (cron)\n    Tasks: 1\n   Memory: 8.6M\n      CPU: 24.967s\n   CGroup: /system.slice/cron.service\n           \xe2\x94\x94\xe2\x94\x801022 /usr/sbin/cron -f\n
Run Code Online (Sandbox Code Playgroud)\n