如何知道 Crontab 是否在工作?

新手上路,请多包涵

我正在尝试运行一个简单的 crontab(在 mac OSX 终端上)

我的 cronjob 看起来像这样:

 * * * * * /Users/tanavya.dimri/Documents/cron.sh

cron.sh:

 #!/bin/bash
cd /Users/tanavya.dimri/Documents
python hello.py > empty

而 hello.py 就是

print "Hello"

当我刚刚运行 sh cron.sh 它工作。 Empty 只是一个空文本文件,确实会更改为“Hello”。但是,我真的不知道它是否与 crontab 一起工作,因为在我从中删除 hello 后文件没有改变。

原文由 SinByCos 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 554
2 个回答

删除文件后尝试。如果 crontab 运行,它应该创建它

有一种方法可以检查您的 crontab 作业是否成功运行。请注意,cron 命令中的日志文件引用是使用完整路径而不是相对路径给出的。您需要确保您的脚本使用完整路径或 cd 到正确的工作目录。

Crontab 日志:如何记录我的 Cron 脚本的输出

假设您已将 backup.sh 添加到您的 crontab 中,如下所示,以便每天午夜执行它。

 $ crontab -e 59 23 * * * /home/john/bin/backup.sh

要验证此作业是否成功执行,请检查 /var/log/cron 文件,其中包含有关系统中执行的所有 cron 作业的信息。从以下输出中可以看出,john 的 cron 作业已成功执行。

 $ tail /var/log/cron
Oct  8 22:00:00 dev-db crond[18340]: (root) CMD (/bin/sh /home/root/bin/system_check &)
Oct  8 23:00:00 dev-db crond[20348]: (oracle) CMD (/bin/sh /home/oracle/bin/cleanup.sh &)
Oct  8 23:59:00 dev-db crond[20399]: (john) CMD (/bin/sh /home/john/bin/backup.sh &)

Cron 日志包含以下信息:

时间戳 – 执行 cron 作业的日期和时间

主机名——服务器的主机名(例如,dev-db)

cron 守护程序名称和 PID。例如,crond[20399]

用户名 – 执行此 cron 作业的用户名。例如,约翰。

CMD – 这之后的任何内容都是当时执行的真实命令。

如果 backup.sh 中有任何 echo 语句,您可能希望将它们记录到一个文件中。通常,如果 backup.sh cron 脚本抛出任何输出(包括错误),您可能希望将这些输出记录到日志文件中。为此,修改 crontab 条目并添加输出和错误重定向,如下所示。

 $ crontab -e 59 23 * * * /home/john/bin/backup.sh > /home/john/logs/backup.log 2>&1

在上面:

/home/john/logs/backup.log 表示 backup.sh 脚本的标准输出将被重定向到 backup.log 文件。

2>&1 表示标准错误 (2>) 被重定向到标准输出 (&1) 指向的同一个文件描述符。

因此,标准输出和错误都将重定向到 /home/john/logs/backup.log

原文由 sabbahillel 发布,翻译遵循 CC BY-SA 3.0 许可协议

默认情况下,cronjobs 登录到 /var/log/syslog

因此,您可以简单地 grep 该日志 CRON 并检查您的作业执行情况:

 grep CRON /var/log/syslog

原文由 Andriy Ivaneyko 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题