本文最先发布在:https://cloud.tencent.com/developer/article/1632348
Cron 是一个定时守护程序,它允许你在指定的时间周期内定时执行任务。这些任务被称为 定时任务,它们通过由 分钟,小时,日,月,星期,或者其中的任意组合来指定时间。
Cron 定时任务通常被用来执行系统维护操作。例如,一个 cron 定时任务可以被设置为自动重复任务,例如:备份数据库,使用最新的安全补丁来更新系统,清理缓存,发送邮件,等等。
本文讲解如何列出 cron 定时任务。
用户的 crontab 文件被命名为用户的名字,并且它们的位置由于操作系统不同而不同。在基于 Red Hat 的发行版中,例如 CentOS, crontab文件被存储在 /var/spool/cron
目录,而在 Debian 和 Ubuntu中,这些文件被存储在 /var/spool/cron/crontabs
文件夹。
想要获得你所登录的当前用户名下的所有 Cron 定时任务, 使用crontab
命令:
crontab -l
如果用户已经设置了 cron 定时任务,那么用户 crontabs 内容将会显示在屏幕上。否则,这个命令将会打印出no crontab for <username>
。
想要列出其他用户的 Cron 定时任务,使用-u
选项在命令最后来指定用户名称。例如,想要列出用户名为“mark” 的 cron 任务,你将使用:
sudo crontab -u mark -l
每一个用户 crontab 文件权限为 600
,并且归属于用户所有。仅仅 root 或者其他有 sudo 权限的用户可以查看其他用户的 cron 定时任务。
想要列出那些用户创建了 cron 定时任务,以 root 或者其他 sudo 用户身份列出spool
目录:
sudo ls -1 /var/spool/cron/crontabs
输出类似下面这样:
root
mark
/etc/crontab
和在/etc/cron.d
目录下的文件都是系统范围的 crontab 文件,它们仅仅可以被系统管理员编辑。
使用 cat, less 或者其他任何文本编辑器来查看文件内容:
cat /etc/crontab /etc/cron.d/*
在大部分 Linux 发行版中,你还可以将脚本放置在/etc/cron.{hourly,daily,weekly,monthly}
文件夹,并且脚本将会在每一个hour/day/week/month
时间执行。
这些目录下的每一个脚本都必须拥有执行权限。否则,cron 定时任务将不会被执行。
例如,想要查看所有的周定时任务,你可以输入:
ls -l /etc/cron.weekly/
输出:
-rwxr-xr-x 1 root root 813 Feb 10 2019 man-db
如果输出为空,它意味着没有周定时任务。
Systemd 定时器是一些以*.timer
的单元文件,它允许你基于时间来运行任务。
在使用 systemd 作为 init 系统的发行版上, 定时器 被用来和标准的 cron 守护程序来交互。
想要在你的机器上查看 systemd 定时器,运行下面的命令:
systemctl list-timers
输出:
NEXT LEFT LAST PASSED UNIT ACTIVATES
Sun 2020-02-16 00:00:00 UTC 1h 53min left Sat 2020-02-15 17:04:11 UTC 5h 2min ago logrotate.timer logrotate.service
Sun 2020-02-16 00:00:00 UTC 1h 53min left Sat 2020-02-15 17:04:11 UTC 5h 2min ago man-db.timer man-db.service
Sun 2020-02-16 03:50:52 UTC 5h 44min left Sat 2020-02-15 17:04:11 UTC 5h 2min ago apt-daily.timer apt-daily.service
Sun 2020-02-16 06:12:38 UTC 8h left Sat 2020-02-15 17:04:11 UTC 5h 2min ago apt-daily-upgrade.timer apt-daily-upgrade.service
Sun 2020-02-16 18:44:56 UTC 20h left Sat 2020-02-15 17:16:10 UTC 4h 50min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service
我们已经向你展示如何列出 cron 定时任务 和 systemd 定时器。
如果你有任何疑问,请通过以下方式联系我们:
微信: sn0wdr1am86
微信群: 加上面的微信,备注微信群
QQ: 3217680847
QQ 群: 82695646