如何获得我的机器上所有预定的cron作业的列表?

我的系统管理员在我的机器上设置了一堆cron作业。我想确切地知道什么时间安排了什么工作。我怎样才能得到这个列表呢?

解决办法

根据你的linux系统的设置情况,你可以在。

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

另外,许多发行版都有。

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

  • /etc/cron.hourly, /etc/cron.day, /etc/cron.weekly, /etc/cron.monthly

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

除此之外,你还可以在job(检查/var/spool/at/*)、anacron(/etc/anacrontab/var/spool/anacron/*)和可能其他我忘记的东西。

评论(7)

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

$ crontab -l

或为另一个用户通过

# crontab -l -u juser

要获得所有用户的crontabs,你可以在所有用户中进行循环,并调用这个命令。

或者,你也可以查找spool文件。通常情况下,它们被保存在/var/spool/cron下,比如vcron的目录如下

/var/spool/cron/crontabs

包含所有用户的所有配置的crontab--除了根用户,根用户也可以通过全系统的crontab来配置作业,该目录位于

/etc/crontab

使用cronie(Fedora/CentOS上默认),也有一个.d风格的配置目录,用于系统cron作业。

/etc/cron.d

(一如既往,".d "目录简化了维护属于不同软件包的配置项的工作。)

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

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

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

通过Systemd(例如在Fedora、CentOS 7......),可以通过timer units来配置定期工作的执行。启用的系统定时器可以通过以下方式显示。

$ systemctl list-timers

需要注意的是,除root之外的用户可能会有用户systemd实例在运行,其中也会配置定时器。例如,在 Fedora 上,默认情况下,每个正在登录的用户都有一个用户 systemd 实例。他们可以通过以下方式被识别。

$ 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配置目录下创建符号链接来启用的)。

另见。

评论(8)

列出给定用户的所有密码。

crontab -u username -l;

要列出所有用户的所有crons

以超级用户身份运行它

#!/bin/bash
#List all cron jobs for all users
for user in `cat /etc/passwd | cut -d":" -f1`;
do 
crontab -l -u $user;
done
评论(3)