【问题标题】:How to view a cron job running currently?如何查看当前正在运行的 cron 作业?
【发布时间】:2016-08-21 08:21:02
【问题描述】:

我为日常执行设置了一个 cron 作业(在我自己的 ubuntu 上,仅供试用),如下所示:

0 0 * * * /path/exec.sh

它被设置为每日执行。我通常在早上 8 点左右打开机器。我想知道
- 我的 cron 作业什么时候运行,如果它已经运行了?
- 我还想看看我的 cron 作业目前是否正在运行?

有没有办法查明 cron 作业是否正在运行?

【问题讨论】:

    标签: linux cron


    【解决方案1】:

    您可以使用显示所有活动的 cron 作业

    crontab -l
    

    要查看 cron 作业历史记录,您可以显示日志 -

    grep CRON /var/log/syslog
    

    你可以通过-

    找到crondemon是否运行
    pgrep cron
    

    或所有关于 cron 状态的内容-

    systemctl status cron
    

    【讨论】:

      【解决方案2】:

      检查 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,273458 -f,我不明白“-f”意味着什么?
      【解决方案3】:

      在 Centos 上,cron 日志在 /var/log/cron* 下生成

      如果不是,那么您可以按照以下步骤启用它:

      vi /etc/rsyslog.conf
      

      在文件中,您将找到以下行:

      #cron.*                     -/var/log/cron
      

      取消注释该行(删除 #)并保存 rsyslog..conf 文件。 接下来,您将不得不重新启动 rsyslog 守护进程:

      service rsyslog restart
      

      【讨论】:

        【解决方案4】:

        如果您只是想知道您的 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} 会告诉你作业何时开始以及它是否仍在运行(订单会告诉你它是否仍在运行)。

        【讨论】:

        • 或者更好的是,让您的cron 作业编写一个带有时间戳的日志文件,以便您了解它的进展情况。然后只需tail -f 该文件即可查看其内容。
        【解决方案5】:

        我还想看看我的 cron 作业目前是否正在运行

        ps aux |grep "path/exec.sh"
        

        我的 cron 作业什么时候运行?

        cron 日志仅在启动任务时从 crond 显示,在结束时不显示。您需要将其放在您的任务中或将您的任务嵌入到一个脚本中,并控制开始和结束的时间。

        如果它已经运行了?

        cat /path/logs/messages 或 /path/logs/file 当您的系统放置 crond 日志时(这取决于您的分发设置或您的计算机)

        【讨论】:

        • 你能解释/解码这个命令的输出吗?
        【解决方案6】:

        我认为你只能检查你的进程或监控/var/log/cron

        更新:在 ubuntu 上,日志位于 /var/log/syslog

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-07-16
          • 2014-08-08
          • 2011-09-27
          • 2012-09-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多