如何在 Linux 中列出 Cron 作业

评论 0 浏览 0 2020-02-16

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 作业,则用户 crontab 的内容将显示在屏幕上。否则,该命令将打印no crontab for <username>

要列出其他用户 cron 作业,请使用 -u 选项在命令末尾指定用户名。例如,要列出名为“mark”的用户的 cron 作业,您可以使用:

sudo crontab -u mark -l

每个用户的 crontab 文件都具有 600 权限,并由用户拥有。只有 root 和拥有 sudo 权限的用户才能查看其他用户的 cron 作业。

要找出哪些用户创建了 cron 作业,请以 root 或 sudo 用户身份 list spool 目录的内容:

sudo ls -1 /var/spool/cron/crontabs

输出将如下所示:

输出

root
mark

列出系统的 Cron 作业

/etc/crontab/etc/cron.d目录中的文件是系统范围的crontab文件,只能由系统管理员编辑。

使用 catless 或任何文本编辑器来查看文件的内容:

cat /etc/crontab /etc/cron.d/*

在大多数Linux发行版中,您还可以将脚本放入/etc/cron.{hourly,daily,weekly,monthly}目录中,并且脚本每hour/day/week/month执行一次。

这些目录中的每个脚本都必须具有执行权限 。否则 cron 作业将不会被执行。

例如,要查看所有每周的 cron 作业,您可以输入:

ls -l /etc/cron.weekly/

输出

-rwxr-xr-x 1 root root 813 Feb 10  2019 man-db

如果输出为空,则意味着没有每周的 cron 作业。

系统定时器

Systemd 定时器是以 *.timer 后缀结尾的单元文件,允许您根据时间运行服务单元。

在使用 systemd 作为启动系统的 Linux 发行版上,定时器被用作替代标准的 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 计时器。

如果您有任何疑问,请随时发表评论。

最后更新2023-09-24
0 个评论