VPN技术 · 2023年11月10日 0

如何使用crontab命令定时执行脚本

crontab命令的使用方法(定时执行脚本)

crontab命令的使用方法

crontab命令常见于Unix和Linux的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于”crontab”文件中,以供之后读取和执行。

在Linux系统中,Linux任务调度的工作主要分为以下两类:1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存;2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置。

一、/etc/crontab、/etc/cron.deny 、/etc/cron.allow文件介绍

系统调度的任务一般存放在/etc/crontab这个文件下,里面存放了一些系统运行的调度程序,通过命令我们可以看一下里面的内容:

如何使用crontab命令定时执行脚本
[[email protected] ~]# cat /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/  # 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
如何使用crontab命令定时执行脚本

这些任务都会是系统在运行起来后自动进行调度的。同时在/etc目录下还存放了/etc/cron.deny和/etc/cron.allow文件。

/etc/cron.deny表示不能使用crontab命令的用户。

/etc/cron.allow表示能使用crontab的用户。

如果两个文件同时存在,那么/etc/cron.allow优先。

如果两个文件都不存在,那么只有root用户可以安排作业。

二、crontab命令语法及其各个参数含义

crontab命令的语法为:

 crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]

注意:crontab是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user是指设定指定user的时程表,这个前提是你必须要有其权限(比如说是root)才能够指定他人的时程表。如果不使用 -u user的话,就是表示设定自己的时程表。

各个参数说明:

-e [UserName]: 执行文字编辑器来设定时程表,内定的文字编辑器是 vi -r [UserName]: 删除目前的时程表 -l [UserName]: 列出目前的时程表 -v [UserName]:列出用户cron作业的状态

三、crontab命令的格式

我们如果要创建自己的一个任务调度,可以使用crontab -e这个命令,如:

[[email protected] ~]# crontab -e

此时会进入到vi编辑界面,来编写我们要调度的任务,crontab调度命令的格式如下:

 * * * * * command path  // 前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,即命令字段,其中包括了crontab调度执行的命令。 各个字段之间用spaces和tabs分割。

调度命令的规则:

字段名称说明取值范围
分钟每小时的第几分钟执行0-59
小时每日的第几个小时执行0-23
日期每月的第几天执行1-31
月历每年的第几月执行1-12
星期每周的第几天执行0-6
命令名称欲执行的命令及参数

crontab命令中的一些常用特殊符号:

符号说明
*表示任何时刻
,表示分割
表示一个段,如第二段里:1-5,就表示1到5点
/n表示每个n的单位执行一次,如第二段里,*/1,就表示每隔1个小时执行一次命令。也可以写成1-23/1.

下面给出一些crontab命令的实例:

如何使用crontab命令定时执行脚本
00 8,12,16 * * * /data/app/scripts/monitor/df.sh  30 2 * * * /data/app/scripts/hotbackup/hot_database_backup.sh  10 8,12,16 * * * /data/app/scripts/monitor/check_ind_unusable.sh  10 8,12,16 * * * /data/app/scripts/monitor/check_maxfilesize.sh  10 8,12,16 * * * /data/app/scripts/monitor/check_objectsize.sh    43 21 * * *  每天的21:43执行  15 05 * * *    每天的05:15执行  0 17 * * * 每天的17:00执行  0 17 * * 1 每周一的17:00执行  0,10 17 * * 0,2,3 每周日,周二,周三的17:00和 17:10执行  0-10 17 1 * * 毎月1日从17:00到7:10 毎隔1分钟执行  0 1 * * *         1:00执行  0 */1 * * *        毎时0分 每隔1小时 执行  0 * * * *         毎时0分 每隔1小时 执行  2 8-20/3 * * *      8:02,11:02,14:02,17:02,20:02 执行  30 5 1,15 * *       1日 和 15日的 5:30 执行
如何使用crontab命令定时执行脚本

四、创建我们自己的crontab命令

①实例一:如果我希望每隔一分钟,