Linux定时任务详解

linux的定时任务crond(crontab)服务
1、crond是什么?
crond是linux系统中用来定期执行命令或者指定程序任务的一种服务或软件。
一般在安装完C5/C6系统的时候,crond就会默认存在了。

2、linux定时任务分类:
1)系统自身的定期执行的任务;
2)用户执行的定时任务。

a)at适合执行一次就结束的调度任务。突发性的任务,每天晚上。了解即可。依赖服务atd.
b)anacron适用于非7*24小时开机的服务器准备的。开机执行的,检测停机期间没有执行的任务,在开机后一次性执行一遍。
c)crond,按事先定义号的规则执行定时任务。是企业生产工作中重要的服务。

3、crontab指令
1)选项
-l 查看crontab文件的内容。
-e 编辑crontab文件的内容。
crontab {-i|-e} 实际上就是在操作/var/spool/cron/当前用户的文件。

2)定时任务的指令格式:
用户的定时任务一般分为6个段(每段用空格来分隔),系统的定时任务为/etc/crontab,分为8段,空格来分隔),前5段为时间的设定段,第6段位所要执行的命令或脚步任务段。

root@jackroo cron.daily]# 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语法格式时间段含义
第一段 分钟 00-59(00也可以是0)
第二段 小时 00-23
第三段 日,天 01-31
第四段 月 01-12
第五段 星期,周 0-7(0,7都代表星期日)

crontab语法中的特殊符号含义
*表示任意时间,实际就是“每”时间的意思。00 23 * * * cmd 表示每月每周每日的23:00都执行cmd任务。
-表示分隔符,表示一个时间范围,区间段,如00 17-19 * * * cmd。就是17,18,19点整点分别执行的意思。
,表示分隔时段的意思。30 17,17,19 * * * /scipts/boy.sh 表示每天17,18,19点半执行脚本。
/n n代表数字,即“每隔n单位时间”,如*/10 * * * * cmd,*/10 *的范围是0-59,也可以写成0-59/10。

crontab编辑的定时任务依赖的服务。

[root@jackroo cron.daily]# chkconfig --list crond
crond          	0:off	1:off	2:on	3:on	4:on	5:on	6:off
[root@jackroo cron.daily]# /etc/init.d/crond status
crond (pid  804) is running...
[root@jackroo cron.daily]# ps -ef|grep crond|grep -v grep
root       804     1  0 20:08 ?        00:00:00 crond
[root@jackroo cron.daily]# /etc/init.d/crond restart
Stopping crond:                                            [  OK  ]
Starting crond:                                            [  OK  ]

4、实例演示:
1)每分钟打印一次自己的名字拼音到“/server/log/自己的名字命名的文件"中。

#echo my name to /server/log/lt.log
* * * * *  echo oldboy >>/server/log/lt.log

2)生产环境定时任务的专业写法。
要领1:为定时任务规则加必要的注释,最好是英文注释;
要领2:执行shell脚本任务前加/bin/sh;否则可能因为忘了为脚步设定执行权限x,而无法完成任务。
要领3:定时任务结尾加>/dev/null 2>&1;等价于1>/dev/null 2>/dev/null
要领4:超过2行的命令执行,最好用脚步文件。
要领5:在指定用户下执行相关定时任务。

[root@jackroo spool]# crontab -u oldboy -l
no crontab for oldboy

要领6:生产任务程序不要随意打印输出信息。
要领7:定时任务执行的脚本要规范路径。
要领8:配置定时任务规范操作过程。

1)首先要在命令行操作成功,然后复制成功的命令到脚本里,在各个细小环节减少出错的机会。
2)然后测试脚本,测试成功后,复制脚本到定时任务配置里,不要手敲。
3)先在测试环境下测试,然后正式环境规范部署。

3)/var/spool/clientmqueue文件过多导致inode被消耗尽。no space left on device.
这么多文件哪来的?定时任务没有加 >/dev/null 2>&1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值