linux之crontab(定时任务)

时间:2023-01-19 08:02:11

crontab------定时任务工具

一、参数:

-e:编辑该用户的计时器设置

-l:列出该用户的计时器设置

-r:删除该用户的计时器设置

-u<用户名称>:制定要设定的计时器的用户名称

二、基本介绍 :

#crontab文件中每一行代表一条,每一条是一个定时任务。

1、每一行中按照功能划分为两部分:(定时的时间、所执行的操作)

①、定时的时间--------------定时的时间设置分为5部分,分别为“分 时 日 月 周”,每连个之间以空格隔开

分: 表示分钟,可以是从0到59之间的任何整数。
时:表示小时,可以是从0到23之间的任何整数。
日:表示日期,可以是从1到31之间的任何整数。
月:表示月份,可以是从1到12之间的任何整数。
周:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

例如:设定一条时间每天的凌晨2点的定时任务在时间段设定为0 2 * * *,“*”代表的是“每”即该值得最小单位每个周期都执行,如分钟是*则每分钟都执行,天是*的话,就是每天。

那么,问题来了,以上都是整数时间的设置,那么如果是秒或者是在一个时间段的话呢?

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次

 

如果想在9月25号凌晨的3点到4点每隔15分钟执行一次呢:*/15 3-4 25 9 *

*/15----分钟位,代表每15分钟

3-4-----小时位,代表3点到4点

25------日期位,代表25号

9--------月份位,代表9月

*---------周位,因为已经设定了具体的日志,此处无意义

②、所执行的操作--------------- 即前面的定时器做好了那么就要有要执行的操作与之对应

操作常见的两大类:直接执行命令、执行脚本

######此处需要注意######

默认的系统如果执行命令的话命令需要带上环境变量,比如执行“echo”的话,【15 3 * * * echo “Hello Word!”】  的话,这条命令不会执行,因为crontab不带环境变量,我们需要使用命令的全路径,即使用“which echo” 查看命令的路径,改成 【15 3 * * * /bin/echo “Hello Word!”】

 linux之crontab(定时任务)

同理,如果是普通的shell脚本,你会发现在系统中这个脚本直接执行没有问题,但是放在计划任务中,计划任务执行了,但是脚本没有执行,这就是因为脚本中也没有环境变量,这就需要在脚本的开头加上

. ~/.bash_profile

 

 另外,crontab的守护进程的相关命令:

/etc/init.d/crond status

/etc/init.d/crond restart

 

查看crontab的执行记录即日志:

tail -20f /var/log/cron