我正在学习如何使用 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