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

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

我的系统管理员在我的机器上设置了一堆 cron 作业。我想知道具体安排在什么时间。我怎样才能获得该列表?

答案1

对于大多数 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 来配置作业,该 crontab 位于

/etc/crontab

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

/etc/cron.d

(与往常一样,该.d目录简化了对属于不同包的配置条目的维护。)

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

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

这些脚本的及时执行通常通过run-parts系统 crontab 中的条目或通过纳克朗

系统(例如在 Fedora、CentOS 7 上...)定期作业执行还可以通过以下方式配置计时器单位。启用的系统计时器可以通过以下方式显示:

$ systemctl list-timers

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

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

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

$ systemctl --user list-timers

发出该命令的另一种方法是在常用系统和用户 systemd 配置目录中list-timers搜索计时器单元文件(模式:)和它们的符号链接:*.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 配置目录中创建符号链接来启用计时器单元。)

也可以看看:

答案2

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

  • /var/spool/cron/*(用户 crontab)
  • /etc/crontab(系统范围的 crontab)

此外,许多发行版都有:

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

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

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

最重要的是,你可以有 at jobs (检查/var/spool/at/*)、anacron (/etc/anacrontab/var/spool/anacron/*)以及可能还有其他我忘记的。

答案3

列出给定用户的所有 cron。

crontab -u 用户名 -l;

列出所有用户的所有 cron

以超级用户身份运行

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

答案4

您可以列出所有 cron 作业(我使用 more 来列出输出中的位置):

sudo sh -c 'more /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/* 2>/dev/null' | less

或者不加注释:

sudo sh -c 'more /etc/crontab /etc/cron.d/* /var/spool/cron/crontabs/* 2>/dev/null' \
   | grep "^\s*[^#]"

crontab 有用于在 cron.hourly、daily、weekly 和 Monthly 中运行脚本的条目 - 您可以列出这些:

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

相关内容