如何在 Linux 中列出 Cron 定时任务

Cron 是一个定时守护程序,它允许你在指定的时间周期内定时执行任务。这些任务被称为 定时任务,它们通过由 分钟,小时,日,月,星期,或者其中的任意组合来指定时间。

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 定时器

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

 

posted @ 2024-02-28 17:26  airoot  阅读(68)  评论(0编辑  收藏  举报