我有一个 cron 作业设置为每日执行(在我自己的 ubuntu 上,仅供试用),如下所示:
0 0 * * * /path/exec.sh
已设置为每日执行。我通常在早上 8 点左右打开机器。我很想知道
- 我的 cron 作业什么时候运行(如果它已经运行了)?
- 我还想看看我的 cron 作业目前是否正在运行?
有没有办法找出 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 的日志
您可以使用
显示所有活动的 cron 作业crontab -l
要查看 cron 作业历史记录,您可以通过以下方式显示日志 -
grep CRON /var/log/syslog
您可以通过以下方式查看 cron 守护进程是否正在运行-
pgrep cron
或有关 cron 状态的所有信息 -
systemctl status cron
我还想看看我的 cron 作业目前是否正在运行?
ps aux |grep "path/exec.sh"
我的 cron 作业什么时候运行?
Cron 日志仅在 crond 启动任务时显示,在结束时不记录。您需要将其放在您的任务中或将您的任务嵌入到一个脚本中并控制开始和结束时间。
如果已经运行了?
cat /path/logs/messages 或 /path/logs/file 当你的系统放置 crond 日志时(这取决于你的发行版设置或你的计算机)
如果您只是想知道您的 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}
将告诉您作业何时开始以及它是否仍在运行(订单将告诉您它是否仍在运行)。
我认为你只能检查你的进程或监控/var/log/cron
更新:在 ubuntu 上,日志位于 /var/log/syslog
在 Centos 上,cron 日志在
/var/log/cron*
下生成
如果没有,您可以按照以下步骤启用它:
vi /etc/rsyslog.conf
在文件中,您将找到以下行:
#cron.* -/var/log/cron
取消注释该行(删除 #)并保存 rsyslog..conf 文件。 接下来,您必须重新启动 rsyslog 守护进程:
service rsyslog restart
在 Ubuntu 操作系统上,您可以访问此日志文件。如果您的 cronjob 当前正在运行,您可以通过执行查看此命令行。
sudo tail -f /var/log/syslog