AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 709713
Accepted
jnbdz
jnbdz
Asked: 2015-07-31 07:22:44 +0800 CST2015-07-31 07:22:44 +0800 CST 2015-07-31 07:22:44 +0800 CST

列出所有正在运行的 cron 作业

  • 772

有没有办法在我的服务器上查看正在运行的 cron 作业列表?

我想查看正在加载的文件或命令的名称。加上它运行了多长时间。

我在 CentOS 上。

cron
  • 4 4 个回答
  • 21262 Views

4 个回答

  • Voted
  1. Best Answer
    user9517
    2015-07-31T07:31:15+08:002015-07-31T07:31:15+08:00

    cron 守护进程只是代表用户运行命令。您可以查看/var/log/cron已运行的命令,还可以查看所有常用位置(/var/spool/cron/、/etc/crontab、/etc/cron.d/、/etc/cron.*、 /etc/anacrontab &c ) 以获取 cron 运行的命令列表。

    除此之外,每个进程的运行时间会有所不同并且很难追踪,您几乎可以肯定无法胜任这项工作。你真正想要达到什么目的?

    • 2
  2. Aaron Copley
    2015-07-31T08:52:59+08:002015-07-31T08:52:59+08:00

    这又快又脏。我几乎觉得用这么多管道发布一些东西很尴尬,因为我确信有更有效的方法。但是,它可以完成工作,您可以从中学习并自己改进。

    您可以解析 crond 的进程树以找到当前的子进程。

    cronpid="$(pgrep -P 1 crond)"
    cronjobs="$(pstree -p $cronpid | sed 's/)/)\n/g' | grep -v crond | grep -wo '[0-9]*')"
    

    解释:

    • 该pgrep命令返回父 PID 为 1 的 crond 的 PID。
    • 该pstree命令返回 crond 进程的进程树。
    • 该sed命令将进程树输出拆分为多行。(出于下一个命令的目的。)
    • 第一个grep是从输出中排除 crond 本身。
    • 第二个grep是提取剩余进程的 PID。输出现在已减少为仅正在运行的 cron 作业。( $cronjobs)

    现在,您可以对上面返回的 PID 进行循环,并对每个作业进行单独的查询,以确定它运行了多长时间以及命令是什么。

    for job in ${cronjobs[@]}; do
      ps -p "$job" -o etime,cmd --no-headers
    done
    

    示例输出:

          01:06 /usr/bin/sleep 90
          00:06 /usr/bin/sleep 90
    
    • 2
  3. user2997577
    2015-07-31T08:31:21+08:002015-07-31T08:31:21+08:00

    此外,crontab 具有 -u 选项来列出特定用户的 cron 作业。对于运行时间,如果作业有输出,它将通过电子邮件发送给用户,因此您可以获得预定开始时间和电子邮件到达之间的差异,以大致了解作业需要多长时间。cron 本身不跟踪运行时间。

    对于当前正在运行的作业,如果不参考 cron 计划就很难获得,除非这些作业是从 /etc/cron.* 运行的。在这种情况下,可以使用 ps 来跟踪此类作业。

    • 0
  4. john
    2022-03-10T14:22:08+08:002022-03-10T14:22:08+08:00

    这对于文本处理也非常强大

    printf "%s\n%s\n%s\n" "$OUTPUT1" "$OUTPUT2" "$OUTPUT3" | cat - /var/startup/forex/unhandled/num.txt >> temp && mv temp /var/startup/forex/unhandled/num.txt

    在文本文件中逐行打印。你需要定义输出寿

    • 0

相关问题

  • 每 4 小时运行一次 cron 的正确语法是什么?[复制]

  • 用于 mysql 数据库清理和备份的 crontab

  • Windows cron 作业

  • 使用 crontab 和 /etc/cron.hourly,daily,weekly 的区别

  • crontab ifconfig 什么都不输出

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve