我的系统管理员在我的机器上设置了一堆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/*
)和可能其他我忘记的东西。
对于大多数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配置目录下创建符号链接来启用的)。
另见。
列出给定用户的所有密码。
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