Linux定时任务crond服务:

crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件。这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。

Linux系统中定时任务调度的工作可以分为以下两种。

1、系统自身执行的任务

2、用户执行的任务工作

Linux系统下定时任务软件种类

at:适合仅执行一次就结束的调度任务,这个命令仅作了解,不要深入研究

crontab:要执行crontab这个命令,也需要启动一个服务crond才行,这个crontab命令是老男孩生产中最常用的,务必掌握。

anacron:这个命令主要用于非7X24小时开机的服务器准备的,anacron并不你呢个指定具体时间执行任务工作,而是以天为周期或者在系统每次开机后执行的任务工作。他会检测服务区停机期间应该执行,但是并没有进行的任务工作,并将该任务执行一边。

提示:

1、我们所说的crond服务是运行的程序,而crontab命令是用会用来设置定时规则的命令。

2、crond服务是企业生产工作中常用的重要服务,atanacron很少使用,可以忽略。

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 –e里编辑,如果里面有特殊字符,还要加转义符

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、定时任务脚本中的程序命令用全路径,尽可能全路径,如果注意到了环境变量重新定义的问题,这里就不需要了