我正在学习如何使用 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 实例中运行此命令,您需要更多输出,请告诉我。
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\ntail -f /some/other/file\n
Run Code Online (Sandbox Code Playgroud)\n\n在 Ubuntu 16.04 及更高版本上,使用 systemd 查看 cron 日志,执行以下操作:
\n\njournalctl -u cron\n
Run Code Online (Sandbox Code Playgroud)\n\n守护cron
进程只是cron
,而不是crond
:
$ 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
归档时间: |
|
查看次数: |
10292 次 |
最近记录: |