【发布时间】:2016-08-21 08:21:02
【问题描述】:
我为日常执行设置了一个 cron 作业(在我自己的 ubuntu 上,仅供试用),如下所示:
0 0 * * * /path/exec.sh
它被设置为每日执行。我通常在早上 8 点左右打开机器。我想知道
- 我的 cron 作业什么时候运行,如果它已经运行了?
- 我还想看看我的 cron 作业目前是否正在运行?
有没有办法查明 cron 作业是否正在运行?
【问题讨论】:
我为日常执行设置了一个 cron 作业(在我自己的 ubuntu 上,仅供试用),如下所示:
0 0 * * * /path/exec.sh
它被设置为每日执行。我通常在早上 8 点左右打开机器。我想知道
- 我的 cron 作业什么时候运行,如果它已经运行了?
- 我还想看看我的 cron 作业目前是否正在运行?
有没有办法查明 cron 作业是否正在运行?
【问题讨论】:
您可以使用显示所有活动的 cron 作业
crontab -l
要查看 cron 作业历史记录,您可以显示日志 -
grep CRON /var/log/syslog
你可以通过-
找到crondemon是否运行pgrep cron
或所有关于 cron 状态的内容-
systemctl status cron
【讨论】:
检查 cron 在这个时刻是否真的在运行任何东西(在 ubuntu 上工作)
pstree -apl `pidof cron`
你会得到
2775,cron # your pid (2775) will be different to mine :-)
或一个包含 cron 正在运行的所有子进程的树输出(如果您没有足够的权限,它可能不会命名它们) 正如 Hamoriz 所说,日志在 /var/log/syslog 所以
grep CRON /var/log/syslog
将为您提供仅用于 cron 的日志
【讨论】:
在 Centos 上,cron 日志在 /var/log/cron* 下生成
如果不是,那么您可以按照以下步骤启用它:
vi /etc/rsyslog.conf
在文件中,您将找到以下行:
#cron.* -/var/log/cron
取消注释该行(删除 #)并保存 rsyslog..conf 文件。 接下来,您将不得不重新启动 rsyslog 守护进程:
service rsyslog restart
【讨论】:
如果您只是想知道您的 cronjob 当前是否正在运行以及上次启动的时间,那么我发现以下最简单的方法:
0 0 * * * touch /path/cron.start; /path/exec.sh; touch /path/cron.end
这将创建一个文件/path/cron.start,其时间戳是开始时间。作业完成后,文件/path/cron.end 将具有 cron 完成时的时间戳。所以一个简单的ls -lrt /path/cron.{start,end} 会告诉你作业何时开始以及它是否仍在运行(订单会告诉你它是否仍在运行)。
【讨论】:
cron 作业编写一个带有时间戳的日志文件,以便您了解它的进展情况。然后只需tail -f 该文件即可查看其内容。
我还想看看我的 cron 作业目前是否正在运行?
ps aux |grep "path/exec.sh"
我的 cron 作业什么时候运行?
cron 日志仅在启动任务时从 crond 显示,在结束时不显示。您需要将其放在您的任务中或将您的任务嵌入到一个脚本中,并控制开始和结束的时间。
如果它已经运行了?
cat /path/logs/messages 或 /path/logs/file 当您的系统放置 crond 日志时(这取决于您的分发设置或您的计算机)
【讨论】:
我认为你只能检查你的进程或监控/var/log/cron
更新:在 ubuntu 上,日志位于 /var/log/syslog
【讨论】: