Linux系统crond定时任务

crond定时任务

 

    简述:crond是linux系统的一个守护进程,真正管理crond定时任务的是crontab命令,但是crontab命令依赖于crond服务进程,所以crontab命令和crond两者不能分割,crond定时任务是企业生产工作中常用的重要服务,另外还有一些定时任务命令at和anacron很少使用,可以忽略。

 

1.命令:crontab

常用参数

描述

-l

列出当前定时计划任务

-e

编辑定时计划任务文件,相当于vim /var/spool/root

-r

删除定时计划任务

-i

删除计划任务前提醒

-u

指定用户设置计划任务

提示:当root编辑计划任务时,相当于修改/var/spool/cron/root,而如果是普通用户jonny编辑计划任务时,相当于修改/var/spool/cron/jonny

 

2.crontab 语法格式中时间段的含义如下表:

含义

取值范围(整数)

第一段

代表分钟

00-59(00也可以是0)

第二段

代表小时

00-23

第三段

代表日,天

01-31

第四段

代表月份

01-12

第五段

代表星期,周几

0-7(0和7都是表示星期天)

提示:时间记忆方法:分时日月周

 

3.crontab 语法格式中特殊符号含义如下表

特殊符号

含义

*

*号,表示任意时间,实际就是“每”的意思。

举例:如00 23 * * * cmd 表示每月每周每天的23:00都执行cmd任务。需要注意的是:每个时间为上的*表示每,如果位上是*就是该位上时间的取值范围,列如:小时上的*等价于00-23

经验技巧:定时任务规则如果到小时,口述时就最多提每天。

分位上的*就等价于0-59,表示每分。

-

减号,表示分隔符,表示一个时间范围,区间段,如17-19点,每天的17,18,19的00分执行任务。00 17-19 * * * cmd,就是17,18,19点整点分别执行的意思

逗号,表示分隔时段的意思。30 17,18,19 * * * /bin/sh/scripts/oldboy.sh 表示每天17、18、和19点的半点时刻执行/scripts/oldboy.sh脚本。也可以和“-”结合使用,例如:30 3-5,17-19 * * * /bin/sh/scripts/oldboy.sh

\n

n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成*/10 * * * * cmd , 其中,*/10,*范围是0-59,因此,也可以写成0-59/10。

[root@C58~]# crontab -l

#time sync by oldboy 201510

00-59/10 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

 

4.crond定时任务小技巧

a)养成习惯,脚本要创建一个专门存放脚本的地方,如/server/scripts

b)执行脚本习惯用运行/bin/sh #好处是不用老是记住需要给脚本执行权限

c)一般的脚本都要放到>>/dev/null 2>&1主要针对没有输出的命令

d)脚本最好是复制命令行执行过后,能够正常输出,然后在把命令复制到定时计划任务。

e)为定时计划任务规则加注释,(最好是英文注释),这是个习惯和规范。

例如:什么人,什么时间,因为谁,(需求方),做了什么事,如果这些信息记清楚了,这样其他的运维人员(同事)可以很容易理解任务的信息,从而提升团队工作效率。

f)在指定用户下执行相关的定时任务

g)生产任务程序不要随意打印输出信息

如果不就掉到空的话,那个定时任务输出就会发邮件给管理员,如果没有开邮件服务就会输出到邮件的队列文件,所以就出现inode出现问题的时候

 

5.crond定时任务演示:

a)crontab -l 列出定时任务

[jonny@Centos6 ~]$ crontab -l
######Written by jonny data:2015-10-26#####
###########Backup Scheduled Tasks##########
00 12 * * * /bin/sh /server/script/data_bak.sh

 

b)crontab -e 编辑定时任务

[jonny@Centos6 ~]$ crontab -e
######Written by jonny data:2015-10-26#####
###########Backup Scheduled Tasks##########
00 12 * * * /bin/sh     /script/data_bak.sh

 

c)crontab -r 删除定时任务

[jonny@Centos6 ~]$ crontab -r
[jonny@Centos6 ~]$ crontab -l
no crontab for jonny

 

d)crontab -ir 删除定时任务前提醒

[jonny@Centos6 ~]$ crontab -ir
crontab: really delete jonny's crontab? yes
[jonny@Centos6 ~]$ crontab -l
no crontab for jonny

 

e)crontab -u jonny -e 指定jonny编辑定时任务

[root@Centos6 /]# crontab -u jonny -e        #注意:现在用户是root

######Written by jonny data:2015-10-26#####
###########Backup Scheduled Tasks##########
00 12 * * * /bin/sh /server/script/data_bak.sh

[root@Centos6 /]# crontab -u jonny -l
######Written by jonny data:2015-10-26#####
###########Backup Scheduled Tasks##########
00 12 * * * /bin/sh /server/script/data_bak.sh

[root@Centos6 /]# crontab -l
* 2 * * * /bin/sh /usr/sbin/apachebak.sh
*/5 * * * * /usr/sbin/ntpdate time.nist.gov
#test */7 to day is OK?
00 03 */7 * * /bin/sh /server/scripts/jonny.sh

 

 

 

 

你可能感兴趣的:(crond定时任务)