Linux crond定时任务
第1章 Crond是什么?
Crond是linux系统用来定期执行命令或指定程序任务的一种服务或软件。一般情况下,我们安装完Centos5/6linux操作系统之后,默认便会启动Crond任务调度服务。Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作。如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作。这个Crond定时任务服务就相当于我们早上使用的闹钟一样。
第2章 Linux系统crond的定时任务
linux系统中定时任务调度的工作可以分为以下两种情况:
1、 linux系统自身定期执行的任务工作:系统周期性自行执行的任务工作,如轮询系统日志、备份系统数据、清理系统缓存等,这些任务无须我们人为干预。例如:
[root@web01 ~]# ll /var/log/messages*
-rw------- 1 root root 585506 1月 24 21:32 /var/log/messages
-rw------- 1 root root 495226 12月 13 14:41 /var/log/messages-20151213
-rw------- 1 root root 501046 12月 20 10:33 /var/log/messages-20151220
-rw------- 1 root root 333767 12月 30 20:27 /var/log/messages-20151230
-rw------- 1 root root 332996 1月 10 12:19 /var/log/messages-20160110
2、用户执行的任务工作:某个用户或系统管理员定期要做的工作,例如每隔5分钟和互联网上的时间服务器进行时间同步,每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要由用户自己来设置。
[root@web01 ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
#* * * * * echo "yangrz" >>/server/log/yangrz
第3章 命令说明
crond服务是运行的程序,而crontab是用户用来设置定时规则的命令。
crontab option
-l list(查看用户设置的定时任务)
-e 编辑定时任务配置文件
crontab –e ===vi /var/spool/cron/root
crontab –l ===cat /var/spool/cron/root
第4章 crontab语法格式中时间段的含义
|
段 |
含义 |
取值范围(整数) |
|
第一段 |
表示分钟 |
00-59(00也可以是0) |
|
第二段 |
表示小时 |
00-23 |
|
第三段 |
表示日、天 |
01-31 |
|
第四段 |
表示月份 |
01-12 |
|
第五段 |
表示星期、周几 |
0-7(0和7都表示周日) |
|
提示:记忆口诀:分时日月周 |
# .---------------- 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
第5章 crontab语法格式中特殊符号含义
|
特殊符号 |
含义 |
|
* |
*号表示任意时间都,实际就是“每”的意思。如:00 23 * * * cmd表示每月每周每日的23:00都执行cmd任务。 提示:定时任务如果是到小时,口述时就最多提每天。 分位上的*就等价于0-59,表示每分。 |
|
- |
减号,表示分隔符,表示一个时间范围,区间段,如17-19点,每天的17,18,19点的00分执行任务。00 17-19 * * * cmd。就是17,18,19点整点分别执行的意思。 |
|
, |
逗号,表示分隔时段的意思。30 17,18,19 * * * /bin/sh /scripts/test.sh 表示每天17、18、19点的半点时刻执行/scripts/test.sh脚本。 |
|
/n |
n代表数字,即“每个n单位时间”,例如:每10分钟执行一次任务,可以写成*/10 * * * * cmd,其中*/10的意思是每10分钟执行cmd命令。 |

第6章 书写定时任务的若干要领方法:
要领1:为定时任务规则加必要的注释
要领2:定时任务命令或程序最好写到脚本里执行
要领3:执行shell脚本任务前加/bin/sh
要领4:定时任务命令或脚本结尾加>/dev/null 2>&1
&>/dev/null 1>/dev/null 2>/dev/null
要领5:在指定用户下执行相关的定时任务
要领6:生产任务程序不要随意打印输出信息
tar zcf echo 123 >a.log
要领7:定时任务执行的脚本要规范路径(/service/scripts)
要领8:配置定时任务规范操作过程
第7章 关于配置定时任务规范操作过程
1)首先要在命令行操作成功,然后复制成功的命令到脚本里,在各个细小环节减少出错的几率。
2)然后测试脚本,测试成功后,复制脚本的规范路径到定时任务配置里,不要手敲。
3)先在测试环境测试,然后正式环境规范部署。
题:每隔2小时将系统的/etc/service文件打包备份的/tmp下(最好每次备份成不同的包)
包袱:/etc/service是不存在的,应该是/etc/services
要cd到目标内容的上级目录打包
打包的频率是分,包名必须精确到分。
确保命令执行正确。然后写到脚本里(复制进去)
定时任务命令或程序最好写到脚本里执行。
测试脚本正确性(定时任务怎么写,命令行就怎么测试)
脚本测试正确了,命令行的命令也要复制。
* * * * * tar zcvf /tmp/service-$(date +%F-%H)tar.gz ./services
这样写是不对的,在定时任务配置文件里还得转义、所以要把命令写到文件中,避免错误。
题:每天晚上0点,把/tmp/services.tar.gz的包,删除前天前的。
/var/log/cron*
这是crontab的日志,执行正确还是错误,日志里边都会有输出。
第8章 工作中调试定时任务的方法:
1、 增加执行任务频率调试任务(某些任务不能用于生产环境没有测试机会)
2、 代码发布:个人开发环境—办公测试环境—IDC机房测试环境—》IDC正式环境(分组,灰度发布)
3、 调整系统时间调试任务(不能直接用于生产环境),保持5分钟
4、 通过脚本日志输出调试定时任务
5、 注意一些任务命令带来的问题
6、 (*/1 * * * * * echo “==” >> /tmp/oldboy.log >dev/null 2>&1)
7、 注意环境变量导致的定时任务故障(java)
8、 通过crond定时任务日志调试定时任务(/var/log/cron)
9、 把脚本放到定时任务里边,很多时候取系统变量,取不到,会出问题。这时候可以在脚本里把系统变量重新定义一遍。
第9章 crontab定时任务生产应用问题10箴言:
1. 系统环境变量问题
2. 定时任务要用绝对路径
3. 脚本权限问题,加/bin/sh
4. 时间变量问题用反斜线\%转义,最好用脚本
5. >/dev/null 2>&1为题(1>/dev/null 2>/dev/null ,&>/dev/null)
6. 定时任务规则之前加注释
7. 使用脚本程序替代命令行定时任务
8. 避免不必要的程序及命令输出
9. 切到目标目录的上一级打包目标
10. 定时任务脚本中的程序命令尽量用全路径(和环境变量的识别有关)。
Linux crond定时任务的更多相关文章
- Linux之定时任务Crond使用
Linux之定时任务Crond使用 一.用法 crond服务是linux系统自带的服务,是不需要手动安装的: crond服务是一种守护进程: Linux中的用户使用contab命令来配置corn任务: ...
- Linux系统定时任务crond那些事
1 Linux系统定时任务 1.1 定时任务介绍 1.1.1 Crond是什么? Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.Centos5/ linux系统安装完操作 ...
- Linux之定时任务Crond介绍
Linux之定时任务 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便 ...
- Linux:定时任务crond服务
一.crond简介 crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动cro ...
- Linux之crond定时任务
1. 使用crontab工具配置的定时任务 2. 配置定时任务建议规范 3. 定时任务配置问题导致系统出现故障实例 1. 使用crontab工具配置的定时任务 名称 crontab - 维护单个用户的 ...
- CentOS下crond定时任务详细介绍
目录 1.定时任务crond介绍... 2.crond定时任务限权... 3.Crontab用法... 4.Crontab命令的书写格式... 5.定时服务器时间同步... 6.写定时任务注意点.. ...
- LINUX 添加定时任务
LINUX 添加定时任务 crontab - l按 i:x 先按 esc然后 敲入 命令 :x*/5 3 * * 0 /root/ v.sh ..重启服务 service crond restart
- Linux之定时任务
定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调 ...
- Linux 设置定时任务 清空日志
Step 1:前提是linux服务器安装了crond 定时任务需要crond服务的支持 1.启动方法 service crond restart 2.该服务默认是开机启动的 取消定时任务 1.全部取消 ...
随机推荐
- ui方案设计
最近在做一个ui,前端,为了引出创意,万事开头难,记录一下: 算是单页吧,一般都是左侧是导航,右边是内容,单页的话,要记录标签关闭,窗口区域. 操作的连惯性等.UI设计是个细活,需要深加研究,以后补充 ...
- 接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?
接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)? 1. 接口可以继承接口. 2. 抽像类可以实现(implements)接 ...
- mysql之消息队列
消息队列:在消息的传输过程中保存消息的容器. 消息队列管理器在将消息从它的源中继到它的目标时充当中间人.队列的主要目的是提供路由并保证消息的传递:如果发送消息时接收者不可用,消息队列会保留消息,直到可 ...
- start.s 解析(一)
可以参考 : http://blog.csdn.net/bluesummerg/article/details/5940452 (强大的反汇编) http://www.cnblogs.com/yanh ...
- 将EXCEL数据表导入到SQL中
工具/原料 SQL Server Management Studio 已建立SQL数据库 方法/步骤 打开SQL Server Management Studio,按图中的路径进入导入数据界面. ...
- oracle ebs 采购订单关闭之PL/SQL实现方法
应客户需求,需要写个脚本,批量关闭Bonus Item类型的采购订单,在metalink上搜索到一些方法,但是都测试不通.原来需要将代码生成一个并发程序.下面是测试成功的代码. 1.首先创建一个存储过 ...
- 夺命雷公狗jquery---2层级选择器
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- HTML5的自定义属性data-* 的用法解析
人们总喜欢往HTML标签上添加自定义属性来存储和操作数据.但这样做的问题是,你不知道将来会不会有其它脚本把你的自定义属性给重置掉,此外,你这样做也会导致html语法上不符合Html规范,以及一些其它副 ...
- Linux/Unix中的#!和!#
是不是在Terminal输入命令的时候,输入了很长的一个路径,然后发现还有在同一条命令中再输一次的时候很恼火,其实Shell是提供了trick的,就是使用!#(和#!不同哦) 习惯写脚本的猿,通常对于 ...
- ubuntu下搭建JAVA开发环境【转】
转自:http://jingyan.baidu.com/article/86fae346b696633c49121a30.html JAVA开发环境是一种跨平台的程序设计语言,可以在windows.L ...