如何在Linux中列出Cron作业
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用户身份列出“ spool”目录的内容:
sudo ls -1 /var/spool/cron/crontabs
输出将如下所示:
root mark
列表系统的Cron任务
“/etc/crontab”和“ /etc/cron.d”目录中的文件是系统范围的crontab文件,只能由系统管理员编辑。
使用'cat','less'或者任何文本编辑器来查看文件的内容:
cat /etc/crontab /etc/cron.d/*
在大多数Linux发行版中,我们还可以将脚本放入'/etc/cron。
{每小时,每日,每周,每月}目录中,并且脚本每隔'每小时/每天/每周/每月”执行一次。
这些目录中的每个脚本都必须具有执行权限。
否则,将不执行cron作业。
例如,要查看所有每周的cron作业,我们可以输入:
ls -l /etc/cron.weekly/
-rwxr-xr-x 1 root root 813 Nov 10 2019 man-db
如果输出为空,则意味着没有每周的cron作业。
系统计时器
Systemd计时器是以“ * .timer”后缀结尾的单位文件,可让我们根据时间运行服务单位。
在使用systemd作为初始化系统的Linux发行版上,计时器用作标准cron守护程序的替代方法。
要查看计算机上所有systemd计时器的列表,请运行以下命令:
systemctl list-timers
NEXT LEFT LAST PASSED UNIT ACTIVATES Sun 2017-02-16 00:00:00 UTC 1h 53min left Sat 2017-02-15 17:04:11 UTC 5h 2min ago logrotate.timer logrotate.service Sun 2017-02-16 00:00:00 UTC 1h 53min left Sat 2017-02-15 17:04:11 UTC 5h 2min ago man-db.timer man-db.service Sun 2017-02-16 03:50:52 UTC 5h 44min left Sat 2017-02-15 17:04:11 UTC 5h 2min ago apt-daily.timer apt-daily.service Sun 2017-02-16 06:12:38 UTC 8h left Sat 2017-02-15 17:04:11 UTC 5h 2min ago apt-daily-upgrade.timer apt-daily-upgrade.service Sun 2017-02-16 18:44:56 UTC 20h left Sat 2017-02-15 17:16:10 UTC 4h 50min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service