我刚刚将一台新服务器上线,并按照旧服务器上的 cron 配置方式对其进行了配置,但作业并未运行。因此,我仔细检查了配置,并检查了当前 cron 是否与旧 cron 一样运行。是的,看起来是这样!
由于它是一个“systemd”类型的系统,我运行了适当的命令来查看它认为已安排的内容,以下是我得到的结果:
# systemctl list-timers --all
NEXT LEFT LAST PASSED UNIT ACTIVATES
Sun 2020-08-16 15:15:55 PDT 5min left Sun 2020-08-16 14:15:54 PDT 54min ago dnf-makecache.timer dnf-makecache.service
Sun 2020-08-16 20:57:26 PDT 5h 47min left Sat 2020-08-15 20:57:26 PDT 18h ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
Mon 2020-08-17 00:00:00 PDT 8h left Mon 2020-08-10 00:00:00 PDT 6 days ago fstrim.timer fstrim.service
Mon 2020-08-17 00:00:00 PDT 8h left Sun 2020-08-16 00:00:01 PDT 15h ago mlocate-updatedb.timer mlocate-updatedb.service
Mon 2020-08-17 00:00:00 PDT 8h left Sun 2020-08-16 00:00:01 PDT 15h ago unbound-anchor.timer unbound-anchor.service
5 timers listed.
一切都很好,但它没有显示我添加的具体内容 - 任何内容。因此,我做了我认为正确的事情,我运行systemctl reload crond.service
并得到了相同的输出。所以我重新启动并仍然得到相同的输出!
我的补充是:
- cron.d:本地 - 一组不在常规时间表上的本地事物
- cron.daily:backup.daily logrotate mailbox_check
- cron.monthly;backup.monthly,和;
- cron.weekly;备份.weekly
我完全相信我在配置中犯了错误,或者可能是其他问题导致我认为它们没有运行,但实际上它们确实运行了。但我没有在 ssystemctl list-timer
输出中看到其他条目,这些条目是由安装的软件包放置在那里的,甚至在我开始自己添加东西之前就已经在那里了。
也许问题在于我不熟悉 list-timer 输出?它不应该也显示这些其他作业吗?
答案1
就像 Linux 中的许多东西一样,做事情的方法不止一种。Cron 和 systemd 计时器是执行类似 cron 的事情的不同方法,就像 upstart 一样,init.d 和 systemd 是 3 个不同的 init 系统。
许多 cron 任务由特定用户,因此您可以crontab -l
作为特定用户,或crontab -u username -l
以 root 身份检查另一个用户的 cron 作业。
你还可以查看每日、每周、每月等等
虽然你可以深入研究每一个,但它们是一系列文件,因此
所以ls -la /etc/cron.*
会给你一个概述
geek@heckate_router:~$ ls -la /etc/cron.*
/etc/cron.d:
total 28
drwxr-xr-x 2 root root 4096 Jan 22 2020 .
drwxr-xr-x 117 root root 12288 Aug 12 06:54 ..
-rw-r--r-- 1 root root 589 Jun 26 2018 mdadm
-rw-r--r-- 1 root root 102 Nov 16 2017 .placeholder
-rw-r--r-- 1 root root 190 Jul 25 2018 popularity-contest
/etc/cron.daily:
total 76
drwxr-xr-x 2 root root 4096 Aug 12 06:54 .
drwxr-xr-x 117 root root 12288 Aug 12 06:54 ..
-rwxr-xr-x 1 root root 376 Nov 20 2017 apport
.....
/etc/cron.hourly:
total 20
drwxr-xr-x 2 root root 4096 Jul 25 2018 .
drwxr-xr-x 117 root root 12288 Aug 12 06:54 ..
-rw-r--r-- 1 root root 102 Nov 16 2017 .placeholder
/etc/cron.monthly:
total 20
drwxr-xr-x 2 root root 4096 Nov 18 2018 .
drwxr-xr-x 117 root root 12288 Aug 12 06:54 ..
-rw-r--r-- 1 root root 102 Nov 16 2017 .placeholder
/etc/cron.weekly:
total 28
drwxr-xr-x 2 root root 4096 May 30 2019 .
drwxr-xr-x 117 root root 12288 Aug 12 06:54 ..
-rwxr-xr-x 1 root root 723 Apr 7 2018 man-db
-rw-r--r-- 1 root root 102 Nov 16 2017 .placeholder
-rwxr-xr-x 1 root root 211 Jun 27 2018 update-notifier-common
将这些转换为systemd 计时器脚本超出了这个答案的范围,但它们是不是与经典的 cron 作业相同。