Linux Crontab 定时任务图文详述

Linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题。

cron介绍

我们经常使用的是crontab命令是cron table的简写,它是cron的配置文件,也可以叫它作业列表,我们可以在以下文件夹内找到相关配置文件。

/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名

/etc/crontab 这个文件负责调度各种管理和维护任务。

/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

crontab的使用

我们常用的命令如下:

crontab [-u username]    //省略用户表表示操作当前用户的crontab
   -e      (编辑工作表)
   -l      (列出工作表里的命令)
   -r      (删除工作作)

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。

crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有

* 取值范围内的所有数字

/ 每过多少个数字

- 从X到Z

,散列数字

具体的用cat /etc/crontab可以看一下它的配置文件,可以看到代码的具体格式跟要求就跟下面一样

# 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

实例

实例1:每1分钟执行一次myCommand

* * * * * myCommand

实例2:每小时的第3和第15分钟执行

3,15 * * * * myCommand

实例3:在上午8点到11点的第3和第15分钟执行

3,15 8-11 * * * myCommand

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

3,15 8-11 */2  *  * myCommand

实例5:每周一上午8点到11点的第3和第15分钟执行

3,15 8-11 * * 1 myCommand

实例6:每晚的21:30重启smb

30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启smb

45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启smb

10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb

0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启smb

0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启smb

* */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启smb

* 23-7/1 * * * /etc/init.d/smb restart

下面就具体实验一下这个命令把!

首先使用date命令获取一下当前的系统时间,已经获取到了系统的时间19时5分

Linux Crontab 定时任务图文详述

接下来使用crontab -e命令进入对定时工作列表的文件当中,是一个类似于vim编辑器的一个界面,这边没有加上u选项,如果想指定用户的话加上-u然后指定用户名.但前提是执行的命令不是以交互形式来执行命令,而且指定用户必须对执行的代码拥有执行权限,否则设置了等于没有设置.如果不指定用户名的话,系统默认实行用户为当前用户

Linux Crontab 定时任务图文详述

Linux Crontab 定时任务图文详述

进入任务编辑菜单,我这边输入了一条任务.在每年每月每天的19:08分会在/tmp目录下面创建一个"123.txt"的文件,并且在当中输入一段话" i love you !"

Linux Crontab 定时任务图文详述

接下来使用crontab -l命令来检查一下刚才输入的任务,发现已经存在,接下来要做的就是等待时间的到来

Linux Crontab 定时任务图文详述

再次使用date命令查看了一下系统当前的时间,发现已经过去了好几分钟,使用vim /tmp/123.txt命令查看了已经刚才设定创建的文件.确实发现了这个文件并看见了当中输入的一段话"i love you!",

Linux Crontab 定时任务图文详述

如果说要删除周期性任务的操作就是crontab -r注意是删除全部任务,如下图这边我随便创建了三个周期性的任务保存并退出.后使用crontab -r命令以后查看一下发现刚才创建的三个任务都已经被删除了.这边讲的是如果想删除所有任务的话请用这一条命令. 如果想删除一条任务的请使用crontab -e进入任务编辑模式,用vim的dd(删除行命令)把那一条不需要执行定时任务的代码删除即可

Linux Crontab 定时任务图文详述

Linux Crontab 定时任务图文详述

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11744.html