为了让linux自动执行你本来必须自己执行的任务,比如运行脚本和执行特定的命令,我们使用一个名为cron的工具。 在Linux系统上,cron实用程序是在特定时间间隔自动运行脚本的首选方法。
在本文中,我们将介绍如何查看/列出crontab列表中安排的作业。
对于大多数Crons(例如Vixie-Cron - Debian / Ubuntu默认,Cronie - Fedora默认,Solaris Cron ......),您可以通过以下方式获取当前用户的预定cron作业列表:
crontab -l
或通过其他用户
crontab -u username -l
或者,您可以查找假脱机文件。 通常,它们保存在/var/spool/cron下,例如 对于vcron,以下目录/var/spool/cron/ crontabs 包含所有用户的所有已配置的 crontabs - 除了root用户之外,还可以通过系统范围的 crontab 配置作业,该用户位于:
/etc/crontab
要查看它,请运行以下less命令:
less /etc/crontab
crontab的示例结构:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
在我的电脑上它看起来像这样:
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
使用cronie(默认情况下在Fedora / CentOS上),系统cron作业还有一个cron.d样式的配置目录:
/etc/cron.d
与往常一样,cron.d目录简化了维护属于不同软件包的配置条目。
为方便起见,大多数发行版还提供了定期执行链接/存储脚本的目录,例如:
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
如何列出每小时的Cron工作
要列出每小时的cron作业,请运行以下命令
$ ls -la /etc/cron.hourly/
total 12
drwxr-xr-x 2 root root 4096 Apr 24 20:44 .
drwxr-xr-x 96 root root 4096 May 19 17:12 ..
-rw-r--r-- 1 root root 102 Feb 9 2019 .placeholder
如何列出每天的Cron工作
我们可以使用以下命令列出每日cron作业:
$ ls -la /etc/cron.daily/
total 72
drwxr-xr-x 2 root root 4096 Apr 24 20:46 .
drwxr-xr-x 96 root root 4096 May 19 17:12 ..
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
-rwxr-xr-x 1 root root 376 Apr 4 2014 apport
-rwxr-xr-x 1 root root 15481 Apr 10 2014 apt
-rwxr-xr-x 1 root root 314 Feb 18 2014 aptitude
-rwxr-xr-x 1 root root 355 Jun 4 2013 bsdmainutils
-rwxr-xr-x 1 root root 256 Mar 7 2014 dpkg
-rwxr-xr-x 1 root root 372 Jan 22 2014 logrotate
-rwxr-xr-x 1 root root 1261 Sep 23 2014 man-db
-rwxr-xr-x 1 root root 435 Jun 20 2013 mlocate
-rwxr-xr-x 1 root root 249 Feb 17 2014 passwd
-rwxr-xr-x 1 root root 2417 May 13 2013 popularity-contest
-rwxr-xr-x 1 root root 214 Mar 27 2017 update-notifier-common
-rwxr-xr-x 1 root root 328 Jul 18 2014 upstart
如何列出每周的Cron工作
如果要列出每周的cron工作, 运行以下命令
$ ls -la /etc/cron.weekly/
total 28
drwxr-xr-x 2 root root 4096 Apr 24 20:46 .
drwxr-xr-x 96 root root 4096 May 19 17:12 ..
-rw-r--r-- 1 root root 102 Feb 9 2013 .placeholder
-rwxr-xr-x 1 root root 730 Feb 23 2014 apt-xapian-index
-rwxr-xr-x 1 root root 427 Apr 16 2014 fstrim
-rwxr-xr-x 1 root root 771 Sep 23 2014 man-db
-rwxr-xr-x 1 root root 211 Mar 27 2017 update-notifier-common
如何列出每月的Cron工作
通过以下明亮,将列出每月的cron工作
$ ls -la /etc/cron.monthly/
total 12
drwxr-xr-x 2 root root 4096 Apr 24 20:44 .
drwxr-xr-x 96 root root 4096 May 19 17:12 ..
-rw-r--r-- 1 root root 102 Feb 9 2019 .placeholder
查看软件特定Cron作业
我们可以使用cat命令查看特定的cron作业:
$ cd /etc/cron.daily/
$ ls -l
total 60
-rwxr-xr-x 1 root root 376 Apr 4 2014 apport
-rwxr-xr-x 1 root root 15481 Apr 10 2014 apt
-rwxr-xr-x 1 root root 314 Feb 18 2014 aptitude
-rwxr-xr-x 1 root root 355 Jun 4 2013 bsdmainutils
-rwxr-xr-x 1 root root 256 Mar 7 2014 dpkg
-rwxr-xr-x 1 root root 372 Jan 22 2014 logrotate
-rwxr-xr-x 1 root root 1261 Sep 23 2014 man-db
-rwxr-xr-x 1 root root 435 Jun 20 2013 mlocate
-rwxr-xr-x 1 root root 249 Feb 17 2014 passwd
-rwxr-xr-x 1 root root 2417 May 13 2013 popularity-contest
-rwxr-xr-x 1 root root 214 Mar 27 2017 update-notifier-common
-rwxr-xr-x 1 root root 328 Jul 18 2014 upstart
$ cat update-notifier-common
#!/bin/sh
set -e
[ -x /usr/lib/update-notifier/package-data-downloader ] || exit 0
# Try to rerun any package data downloads that failed at package install time.
/usr/lib/update-notifier/package-data-downloader
最重要的是,你可以有“at”作业(/ var / spool / at / *),anacron(/ etc / anacrontab和/ var / spool / anacron / *)
通过系统crontab中的运行部件条目或通过anacron管理这些脚本的正确和及时执行。
使用systemd(在Fedora,CentOS 7等上),可以通过定时器单元另外配置定期作业执行。 启用的系统计时器可通过以下方式显示:
systemctl list-timers
写在最后
我们已经看到了所有默认目录,您可以在大多数Linux系统上找到cron作业。 如果您有任何问题或意见,请在评论部分发布如下。