一、简单介绍LInux下的定时任务服务:crond服务
-
crond是Linux系统用来定期执行命令或指定程序的服务的一种服务或软件。
-
一般情况下安装完成Linux操作系统之后,默认便会启动Crond任务调用服务。
-
Crond服务会定期(默认一分钟检查一次)检查系统中是否有要执行的任务工作。如果有,便根据其预先设定的定时任务规则自动执行该定时任务工作。
二、设置定时任务,两种方法
1、crontab命令
- crontab -e 进入当前用户的定时任务vim编辑模式
-
crontab -l 查看当前用户的定时任务配置
-
crontab -u 用户名 -l 查看指定用户的定时任务设置
注:crontab { -l | -e } 实际上就是在操作/var/spool/cron/当前用户这样的文件,root用户就是/var/spool/cron/root
2、直接编辑/etc/crontab 文件,即vi /etc/crontab,添加相应的定时任务
注:crontab -e配置是针对当前用户的定时任务,而编辑/etc/crontab是针对系统的定时任务
三、定时任务编写规则说明
# 直接编辑/etc/crontab 文件
minute - 从0到59的整数
hour - 从0到23的整数
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
root - 表示以root用户身份来运行
command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)
run-parts表示后面跟着的是一个文件夹,要执行的是该文件夹下的所有脚本
对于以上各语句,星号(*)表示所有可用的值。例如*在指代month时表示每月执行(需要符合其他限制条件)该命令。
整数间的连字号(-)表示整数列,例如1-4意思是整数1,2,3,4
指定数值由逗号分开。如:3,4,6,8表示这四个指定整数。
符号“/”指定步进设置。“/<interger>”表示步进值。如0-59/2定义每两分钟执行一次。
# crontab -e 同上,只是不需要加用户
四、其他
1、crontab 语法格式中特殊符号含义如下表
特殊符号 含义
* *号,表示任意时间都,实际就是“每”的意思
- 减号表示分隔符,表示一个时间范围,区间段,如17-19点,例如:每天的17,18,19点的00分执行任务。00 17-19 * * * cmd
, 逗号,表示分隔时段的意思例如每天的5点10点00分执行任务,00 5,10 * * * cmd
/n n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成/*10 * * * * cmd,其中,/10,的范围是0-59,因此也可以写成0-59/10
2、定时任务日志
# 不记录日志,在每一行定时任务后面加上:
> /dev/null 2>&1
# 日志记录追加到指定文件
>> /path/mylog.log 2>&1
说明:
> /dev/null 将输出重定向到/dev/null,这是个空设备,也就是忽略其输出。
2>&1 是将错误输出到标准输出,如果在控制台调试,也就是屏幕上,方便调试。
有3个默认的i/o,0是标准输入,一般是键盘;1是标准输出,一般是屏幕了;2是标准错误。