【问题标题】:How do I know if jobs have been/are performing? - Crontab我如何知道工作是否已经/正在执行? - crontab
【发布时间】:2011-01-22 23:57:37
【问题描述】:

我已按照this question中的建议进行操作

由于我使用的是 Django,我已将脚本设置为在数据库中存储每次运行脚本的日期和时间,但尚未在数据库中存储任何条目。


除了输入“top”并搜索之外,还有其他方法可以解决吗?

【问题讨论】:

  • 您的工作是否编写日志文件?如果没有,为什么不呢?

标签: python linux django crontab


【解决方案1】:

首先,我可能会配置 cron 以使用 MAILTO 向自己发送任何输出:

在 /etc/crontab 中:

MAILTO=username

其次,我通常会在我的脚本中添加一些(几乎)不可能失败的内容,如下所示:

#!/bin/sh
echo "$0 ran on `date +%c`" >> /tmp/crontab_test.log

# ... rest of program

如果您直接从 cron 调用 python 脚本,您可以执行类似的操作或创建一个包装器 shell 脚本。

【讨论】:

  • @Kaleb 非常感谢你!我编辑了 /etc/crontab,并添加了 MAILTO=username@gmail.com。还没有电子邮件,我认为脚本中途失败了。
  • 确保运行newaliases,正如 alfredodeza 指出的那样。我从来没有尝试将它发送到本地用户帐户以外的任何东西,所以我不肯定你可以。文档说它是“发送给如此命名的用户”。
  • 另外,请确保它没有被垃圾邮件过滤器接收
  • 如果不清楚,只有当程序向标准输出输出某些内容(并且可能是标准错误)时,您才会收到一封电子邮件。一个简单的 echo 程序应该会发送一封电子邮件。
【解决方案2】:

如果你安装了sendmail,你可以在'/etc/aliases'中添加以下内容

root: your_name@domain.com

完成此操作后,更新运行此命令的别名:

sudo newaliases

每次运行作业时,Cron 都会自动向您发送电子邮件。无需在 crontab 文件中指定。

另外,请确保您测试您的电子邮件功能(例如,确保您能够从服务器发送电子邮件),最后,创建一个简单的 cronjob 并测试您是否收到电子邮件。

不要假设!

【讨论】:

    【解决方案3】:

    除了设置 cron 以发送电子邮件外,您还可以通过将以下内容添加到您的 /etc/syslog.conf 来将 cron 的输出发送到单独的 syslog 日志工具。

    # 记录 cron 内容 cron.* /var/log/cron.log

    这应该在每次运行作业时将一条消息记录到 /var/log/cron.log。

    【讨论】:

    • 我没有 syslog.conf!我正在使用 Ubuntu 9... 我会看看能不能找到一些东西,谢谢!
    • 如果您使用的是 Ubuntu 9.10 (Karmic Koala),sysklogd 软件包已被 rsyslog 替换。根据发行说明,/etc/syslog.conf 中的配置将自动转换为 /etc/rsyslog.d/50-default。 ubuntu.com/getubuntu/releasenotes/910
    猜你喜欢
    • 2016-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多