我的系统管理员在我的机器上设置了一堆 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