您的位置:首页 > 运维架构 > Linux

Linux系统crond定时任务

2015-10-26 16:27 417 查看
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定时任务