Linux crond定时任务

第1章 Crond是什么?

Crond是linux系统用来定期执行命令或指定程序任务的一种服务或软件。一般情况下,我们安装完Centos5/6linux操作系统之后,默认便会启动Crond任务调度服务。Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作。如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作。这个Crond定时任务服务就相当于我们早上使用的闹钟一样。

第2章 Linux系统crond的定时任务

linux系统中定时任务调度的工作可以分为以下两种情况:

1、 linux系统自身定期执行的任务工作:系统周期性自行执行的任务工作,如轮询系统日志、备份系统数据、清理系统缓存等,这些任务无须我们人为干预。例如:

[[email protected] ~]# 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点备份网站站点数据及数据库数据,一般这些工作需要由用户自己来设置。

[[email protected] ~]# 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. 定时任务脚本中的程序命令尽量用全路径(和环境变量的识别有关)。

时间: 2024-10-12 22:05:57

Linux crond定时任务的相关文章

老男孩Linux Crond定时任务练习题

Linux Crond定时任务练习题 Crond是系统中用来定期执行命令或指定程序任务的一种服务或软件. 严格的说,linux系统下的定时任务软件不少,例如:at.crontab.anacron,其中crontab这个命令是在实际工作中常用于周期性执行任务.例如:每五分钟做一次服务器时间同步.要执行crontab这个命令,也需要启动一个服务crond.那么,我们对crontab练习操作一下喽. 一.根据命令说出文字含义: 1)30 3,12 * /bin/sh  /scripts/oldboy.

Linux crond定时任务服务

Linux的定时任务服务crond(crontab) crond是什么? crond是linux系统中用来定期执行命令或指定程序任务的一种服务或者软件. 一般在我们安装完C5/C6系统的时候,crond就会默认存在了. crond服务默认情况(每分钟),会检查系统中是否有需要执行的定时任务,如果有就会根据事先定义好的规则来执行这个定时任务.如:root用户的定时任务配置文为/var/spool/cron/root. crond服务=闹钟 默认情况下,当用户建立定时任务规则后,该规则记录对应的配置

Linux crond 定时任务

配置文件,一般不需要管 这类题目一定要注意陷阱 每两小时一次 * */2 * * * 这样就错的 00 */2 * * * 这样才对 如果只是某天的话,就确定日 如果是每周某天的话,就确定周 代码.配置变更发布流程: 个人开发环境-->办公测试环境-->IDC机房测试环境-->IDC正式环境 注意一些命令带来的问题 例如: */1 * * * * echo "==" >>/tmp/test.log >/dev/null 2>&1 标准输

关于linux的crond定时任务的一些常见问题

Crontab使用的一些常见问题 经过本人测试linux下定时任务crontab容易出现的一些使用错误 总结如下: 先看三条定时任务命令: 1.0 10 * * * /bin/sh /server/scripts/impbf.sh &>/dev/null 2.* 10 * * * /bin/sh /server/scripts/impbf.sh &>/dev/null 3.* */10 * * * /bin/sh /server/scripts/impbf.sh &&g

Linux系统定时任务Crond

Crond是什么 Crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件. 特殊需求:(秒级别)crond服务就无法搞定,一般工作中邪脚本守护进程执行(一般用不上) 为什么要使用crond定时任务 Linux系统的定时任务crond,相当于我们平时生活中得闹钟功能.可以满足周期性执行任务的需求. Linux系统的定时任务 Linux系统中定时任务调度的工作可以分为以下两种情况 1.Linux系统自身定期执行的任务工作:系统周期性执行的任务工作,如轮询系统日志,备份系统数据,清

Linux系统定时任务crond那些事

1 Linux系统定时任务 1.1 定时任务介绍 1.1.1 Crond是什么? Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.Centos5/6 linux系统安装完操作系统默认会启动crond任务调度服务,系统开机启动优化保留crond服务开机自启动.Crond服务定期(默认是每分钟检查一次)检查系统中是否有要执行的任务工作.这个crond定时任务服务就相当于我们平时使用的闹钟一样.特殊需求:(秒级别)crond服务搞不定了,工作中一般写脚本守护程序执行. 1.

第十七天-linux系统定时任务crontab入门讲解

首先先了解下程序和进程的区别: 程序概念: 程序是为了解决一个信息处理任务而预先编制的工作执行方案,是由一串cpu能够执行的基本指令组成的序列,每一条指令规定了计算机进行什么操作(比如加.减.乘.除.判断等)及操作需要的有关数据.例如,从存储器读入一个数送到运算器就是一条指令,从存储器读出一个数并和运算器中原有的数相加也是一条指令.简单的说:我们使用的命令就是程序,QQ程序,听歌的MP3软件,linux系统也是程序. 基本特征:一堆代码,一个文件,一个命令,程序是静态的,放在电脑里还没有被运行.

Linux之定时任务

定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务. Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样. 必须保留的启动服务: crond:定时任务服务network:网络服务rsyslog:

CentOS下crond定时任务详细介绍

目录 1.定时任务crond介绍... 2.crond定时任务限权... 3.Crontab用法... 4.Crontab命令的书写格式... 5.定时服务器时间同步... 6.写定时任务注意点.. 7.调试定时任务... 1.定时任务crond介绍 1>定时任务软件种类 at 适合仅执行一次就结束的调度命令,需要启动一个后端的atd服务. crontab 需要启动一个服务crond才行,crond服务通过crontab命令实现. anacron 无法周期性执行,只能以天为周期,但有个特点,在关