我如何知道我的每小时 cron 作业是否已运行?

我如何知道我的每小时 cron 作业是否已运行?

我已经创建了一个ntpdate名为/etc/cron.hourly

#!/bin/sh
/usr/sbin/ntpdate-debian
date > /tmp/william_tmp
date > /william_tmp
date > ~/william_tmp
echo test

我还对此文件执行了 Chmod 755。

但是我无法判断该文件是否已经运行!

这 3 个目录中均未创建该文件。

如果我手动运行,cd / && run-parts --report /etc/cron.hourly那么文件就会被创建并且我会得到回声。

有人可以推荐(最好是一步一步的!)说明来测试它是否有效吗?

答案1

你应该查看你的/var/log/syslog日志文件。如果 cron 已经运行,它将有一行如下内容:

Jun 11 19:09:01 penguin CRON[17376]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Jun 11 19:17:01 penguin CRON[17799]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

有关故障排除提示,请参阅https://help.ubuntu.com/community/CronHowto#Troubleshooting_and_Common_Problems

答案2

cron 的一个主要缺陷是 cron 在极其有限的 shell 环境中运行,因此很多变量无法导出到环境中,主要是 $PATH。确保使用可执行文件的所有绝对路径,包括echouptimedate等常用函数都需要使用完整路径(/bin/echo/bin/date/usr/bin/uptime)。要确定可执行文件的路径,可以使用which如下命令:which echo- 这将显示该工具的完整路径。

答案3

尝试将脚本(解释器)的第一行更改为:

#!/bin/bash

我以前也遇到过环境变量和 PATH 问题。将解释器更改为后,bash问题就解决了。

答案4

鉴于我已经添加了clearme.sh脚本/etc/cron.hourly/

只需过滤 CRON 任务终端强大的egrepawk

$ cat /var/log/syslog | egrep clearme | awk "{ print $1 }" > ~/Desktop/cronlog.txt

输出将如下所示:

Jan 14 15:20:01 markets-dev CRON[10089]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 15:40:01 markets-dev CRON[18042]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:00:01 markets-dev CRON[22817]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:20:01 markets-dev CRON[28183]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:40:01 markets-dev CRON[411]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:00:01 markets-dev CRON[5442]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:20:01 markets-dev CRON[11935]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)

一步一步解释一切:

  1. 猫/ var /日志/系统日志- 打印系统日志
  2. egrep clearme- 但仅选择包含文本的行清除
  3. awk“{打印$1}”- 打印包含文本的那一行清除
  4. > ~/桌面/cronlog.txt- 将结果输出到文件中定时日志位于桌面目录。

第 4 步是可选的。它只会在终端而不是文件中打印结果。

相关内容