Linux定时任务crond服务:
crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件。这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。
Linux系统中定时任务调度的工作可以分为以下两种。
1、系统自身执行的任务
2、用户执行的任务工作
Linux系统下定时任务软件种类
at:适合仅执行一次就结束的调度任务,这个命令仅作了解,不要深入研究
crontab:要执行crontab这个命令,也需要启动一个服务crond才行,这个crontab命令是老男孩生产中最常用的,务必掌握。
anacron:这个命令主要用于非7X24小时开机的服务器准备的,anacron并不你呢个指定具体时间执行任务工作,而是以天为周期或者在系统每次开机后执行的任务工作。他会检测服务区停机期间应该执行,但是并没有进行的任务工作,并将该任务执行一边。
提示:
1、我们所说的crond服务是运行的程序,而crontab命令是用会用来设置定时规则的命令。
2、crond服务是企业生产工作中常用的重要服务,at和anacron很少使用,可以忽略。
crontab 定时任务规则一般分为6个段,前5段为时间定一段,第六段所要执行的命令或脚步任务段。
每个短的语法:
第一段分00-59(00也可以是0)
第二段时00-23
第三段日01-31
第四段月01-12
第五段周0-7(0和7都代表星期日)
提示口诀:分时日月周
定时任务crond使用说明
[root@eric6 ~]# crontab --help
crontab:无效选项 -- -
crontab: usage error: unrecognized option
usage:crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace,per 1003.2)
-e(edit user's crontab)
-l(list user's crontab)
-r(delete user's crontab)
-i(prompt before deletinguser's crontab)
-s(selinux context)
crontab五个基本要领
1、为定时任务规则加必要的注释
什么人,什么时间,做了什么事
2、执行shell脚本任务前加/bin/sh
加了/bin/sh,不管脚步有没有执行权限都能执行,可以忽略全新的问题
3、在指定用户下执行相关任务
4、定时任务命令结尾加>/dev/null2>&1
dev/null是一个特殊的字符设备文件,表示一个黑洞文件,比如宇宙的黑洞,任何屏幕的输出,指定到这个字符设备文件,都回没有,相当于清理垃圾。
错误输出和正常输出,都定义到这个黑洞
〉标准输出
〉〉追加标准输出
2〉错误输出
2〉〉追加错误输出
5、生产任务程序不要随意打印输出信息
6、定时任务命令或程序最好写到脚本里执行
如果不在脚步里写,直接crontab �Ce里编辑,如果里面有特殊字符,还要加转义符
1)命令程序要用绝对路径。
2)脚本中用到系统的环境变量要重新定义。
7、定时任务执行的脚本要规范路径
例如:/server/scripts
8、配置定时任务规范操作过程
1)命令行操作成功,复制成功的命令到脚本里,在各个细小的环节减少出错的机会。
2)然后测试脚本,成功后,复制脚本的规范路径到定时任务配置里,不要手敲。
3)测试环境现测试,然后正式环境规范部署。
生产场景,如何调试crontab
1、在调试时,把任务执行频率调快一点,如:每分钟、每五分钟执行一次,或者比当前时间
2、调整系统时间调整任务(不能用于生产环境)
用正确的执行任务时间,设置完成后,可以修改下系统当前时间,改成任务执行时间的前几分钟来测试。
1、通过日志输出调试定时任务
2、注意一些任务命令带来的问题
3、注意环境变量导致的定时任务故障
4、通过定时任务日志调试定时任务
1、环境变量问题
2、任务路径问题
使用绝对路径
3、脚本权限问题
4、时间变量问题
如果在命令行模式需要用反斜线转义符,如果使用脚本就不需要了
5、>/dev/null2>&1问题
6、定时任务加注释
7、用脚步程序替代命令行
8、避免不必要的程序输出
9、切到目标目录的上一级打包目标
例如:打包/etc/services执行
cd /etc/ && tar zcf/tmp/service.tar.gz ./services
10、定时任务脚本中的程序命令用全路径,尽可能全路径,如果注意到了环境变量重新定义的问题,这里就不需要了