【问题标题】:How to find a specific cron job?如何找到特定的 cron 工作?
【发布时间】:2017-07-07 01:12:36
【问题描述】:

我的问题是如何找到特定的 cron 作业?

我有一个每天在我的网络/电子邮件服务器上运行的 cron 作业,我确信它存在,因为我每天都会收到一封关于它的电子邮件。这是 LetsEncrypt SSL 证书更新。现在我想修改它,但是我到处都找不到。

(编辑:将“我尝试过的事情”从这里移到答案中)

【问题讨论】:

  • 你搜索过/var/spool/cron/吗?
  • 是的,我做到了。它不存在。
  • 也许检查你的日志,找到你的特定 cron 行
  • 你的操作系统是什么?

标签: ubuntu cron


【解决方案1】:

您的网络/电子邮件服务器是否在容器中部署了任何服务? 检查“docker ps”的输出,看看是否有任何正在运行的相关网络/电子邮件服务。连接到这些实例并找到 cron 条目(如果有)。

【讨论】:

  • 感谢您的帮助,但它没有容器。
  • 查看进程列表,看看是否有僵尸进程带有'ps aux |grep defunct'
【解决方案2】:

Cron 作业是用户特定的或系统范围的。您可以通过以 root 身份运行以下命令来列出所有用户的用户特定 cron 作业:

for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done(source)

如果未找到,则可能是系统范围的 cron 作业,它位于以下文件夹之一中:

etc/crontab 
etc/cron.d
etc/cron.daily
etc/cron.hourly
etc/cron.monthly
etc/cron.weekly

尝试运行:grep -rnw '/etc/' -e 'keyword'

此命令会列出/etc/ 中包含您要查找的关键字的所有文件,因此它也可能会列出您不相关的文件。

在我的例子中,LetsEncrypt 证书更新作业原来是在 etc/crontab,我以为我已经用 crontab -e 检查过,但事实证明它们是不同的:crontab -e 用于用户特定的 cron 作业,而etc/crontab 用于系统范围的cronjobs。这也是为什么我在列出所有用户的所有 cron 作业时没有出现这个 cron 作业的原因。

【讨论】:

    猜你喜欢
    • 2021-09-21
    • 1970-01-01
    • 2013-07-12
    • 2013-07-11
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    相关资源
    最近更新 更多