Linux下:定时任务——执行脚本

一、简单介绍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是标准错误。
原文地址:https://www.cnblogs.com/Mrq-t/p/12836414.html