Fra*_*ank 231 linux cron scheduling
我的系统管理员在我的机器上设置了一堆 cron 作业。我想知道确切的时间安排。我怎样才能得到那个清单?
max*_*zig 163
对于大多数 Cron(例如Vixie-Cron - Debian/Ubuntu 默认、Cronie - Fedora 默认、Solaris Cron ...),您可以通过以下方式获得当前用户的计划 cron 作业列表:
$ crontab -l
Run Code Online (Sandbox Code Playgroud)
或通过其他用户
# crontab -l -u juser
Run Code Online (Sandbox Code Playgroud)
要获取所有用户的 crontab,您可以遍历所有用户并调用此命令。
或者,您可以查找假脱机文件。通常,它们保存在/var/spool/cron,例如 vcron 以下目录
/var/spool/cron/crontabs
Run Code Online (Sandbox Code Playgroud)
包含所有用户的所有配置的 crontabs - 除了 root 用户,他也能够通过系统范围的 crontab 配置作业,它位于
/etc/crontab
Run Code Online (Sandbox Code Playgroud)
使用cronie(Fedora/CentOS 上的默认设置),还有一个.d用于系统 cron 作业的样式配置目录:
/etc/cron.d
Run Code Online (Sandbox Code Playgroud)
(与往常一样,该.d目录简化了对属于不同软件包一部分的配置条目的维护。)
为方便起见,大多数发行版还提供了一个定期执行链接/存储脚本的目录,例如:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
Run Code Online (Sandbox Code Playgroud)
这些脚本的及时执行通常通过run-parts系统 crontab 或anacron中的条目进行管理。
使用Systemd(例如在 Fedora、CentOS 7 上,...)可以通过计时器单元额外配置定期作业执行。启用的系统计时器可以通过以下方式显示:
$ systemctl list-timers
Run Code Online (Sandbox Code Playgroud)
请注意,除 root 之外的用户也可能在配置了计时器的地方运行用户 systemd 实例。例如,在 Fedora 上,默认情况下,为当前登录的每个用户启动一个用户 systemd 实例。它们可以通过以下方式识别:
$ ps aux | grep 'systemd[ ]--user'
Run Code Online (Sandbox Code Playgroud)
这些用户计时器可以通过以下方式列出:
$ systemctl --user list-timers
Run Code Online (Sandbox Code Playgroud)
发出list-timers命令的另一种方法是*.timer在通常的系统和用户 systemd 配置目录中搜索计时器单元文件(模式:)和指向它们的符号链接:
$ 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
Run Code Online (Sandbox Code Playgroud)
(与普通服务单元一样,计时器单元通过在正确的 systemd 配置目录中创建符号链接来启用。)
也可以看看:
jsb*_*ngs 160
根据您的 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
这些只是包含可执行文件的目录,这些可执行文件按其目录名称每小时、每天、每周或每月执行一次。
最重要的是,你可以在工作 (check /var/spool/at/*)、anacron (/etc/anacrontab和/var/spool/anacron/*) 以及我可能忘记的其他人。
列出给定用户的所有 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
555466 次 |
| 最近记录: |