it-swarm.cn

如何获取我的机器上所有计划的cron作业的列表?

我的系统管理员已在我的计算机上设置了一堆cron作业。我想确切地知道什么时间安排了。如何获得该清单?

215
Frank

根据Linux系统的设置,您可以查看:

  • /var/spool/cron/*(用户crontabs)
  • /etc/crontab(系统级crontab)

此外,许多发行版还具有:

  • /etc/cron.d/*这些配置的语法与/etc/crontab

  • /etc/cron.hourly/etc/cron.daily/etc/cron.weekly/etc/cron.monthly

这些只是目录,包含根据其目录名每小时,每天,每周或每月执行的可执行文件。

最重要的是,您可以在工作(请检查/var/spool/at/*),蟒蛇(/etc/anacrontab/var/spool/anacron/*),可能还有其他我忘记的东西。

150
jsbillings

对于大多数Cron(例如 Vixie-Cron -Debian/Ubuntu默认,Cronie-Fedora默认,Solaris Cron ...),您可以通过以下方式获取当前用户的预定cron作业列表:

$ crontab -l

或通过

# crontab -l -u juser

要获取所有用户的crontab,您可以遍历所有用户并调用此命令。

或者,您可以查找假脱机文件。通常,它们保存在/var/spool/cron下,例如对于vcron以下目录

/var/spool/cron/crontabs

包含所有用户的所有已配置crontab-除了root用户之外,该root用户还可以通过位于系统范围内的crontab来配置作业

/etc/crontab

使用 cronie (Fedora/CentOS上的默认设置),还有一个用于系统cron作业的.d样式配置目录:

/etc/cron.d

(与往常一样,.d目录简化了作为不同软件包一部分的配置条目的维护。)

为了方便起见,大多数发行版还提供了一个目录,在该目录中定期执行链接/存储的脚本,例如:

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

这些脚本的及时执行通常通过crontab系统中的run-parts条目或 anacron 来管理。

使用 Systemd (例如在Fedora,CentOS 7等上),可以另外通过 定时器单位 配置定期作业执行。可以通过以下方式显示已启用的系统计时器:

$ systemctl list-timers

请注意,root用户旁边的用户也可能在配置了计时器的情况下运行用户systemd实例。例如,在Fedora上,默认情况下,将为当前登录的每个用户启动一个用户系统实例。可以通过以下方式识别它们:

$ ps aux | grep 'systemd[ ]--user'

这些用户计时器可以通过以下方式列出:

$ systemctl --user list-timers

发出list-timers命令的另一种方法是在常规系统目录和用户systemd配置目录中搜索计时器单元文件(模式:*.timer)和指向它们的符号链接:

$ find /usr/lib/systemd/ /etc/systemd -name '*.timer'
$ find /home '(' -path '/home/*/.local/share/systemd/user/*' \
              -o -path '/home/*/.config/systemd/*' ')' \
      -name '*.timer'  2> /dev/null

(与普通服务单元一样,通过在右侧的systemd config目录中创建符号链接来启用计时器单元。)

也可以看看:

149
maxschlepzig

列出给定用户的所有任务。

crontab -u用户名-l;

列出所有用户的所有任务

以超级用户身份运行

#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do 
crontab -l -u $user;
done
5
Manikandan Arunachalam