1 、Crond简介:
(1)概念:
Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件。
(2)命令:
status //查看此服务的运行状态
stop //停止此服务
restart //重启此服务
reload //重新载入配置
/sbin/service crond start #启动服务
/sbin/service crond stop #关闭服务
/sbin/service crond restart #重启服务
/sbin/service crond reload #重新载入配置
2、crontab简介:
(1)概念:
crontab是一个命令,该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。而crond正是它的守护进程。
(2)命令:
crontab -u # 设定用户的cron服务
crontab -e # 修改 crontab 文件. 如果文件不存在会自动创建(或者通过修改/etc/crontab文件)
crontab -l # 查看用户的 crontab 文件
crontab -r # 删除用户的crontab 文件
crontab -ir # 删除 crontab 文件前提醒用户。
crontab -h # 查看一些参数信息
(3)参数信息:
间间隔的单位可以是分钟,小时,日,月,周及以上的任意组合(注意:日和周不要组合)。
拓展:
/etc/cron.deny(拒绝) | 该文件中所列用户不允许使用crontab |
/etc/cron.allow(允许) | 该文件优先级高于cron.deny(默认不存在,一般不用) |
/var/spool/cron/ | 所有用户crontab配置文件默认都存在此目录,文件名以用户名命名 |
a)cmd为要执行的命令或脚本,例如:/bin/sh /server/scripts/chensiqi.sh
b)每个列之间必须要有一个空格。
时间记忆口诀:分时日月周
crontab 语法格式中特殊符号含义如下表
特殊符号 | 含义 |
* | 代表取值范围内的数字 |
/ | ① 代表”每”例如:每10分钟执行一次;② 任务可以写成*/10 * * * * cmd, |
- |
① 代表分隔符,表示一个时间范围;② 例如:每天的17,18,19点的00分执行任务。00 17-19 * * * cmd |
, | ① 表示分隔时段的意思;② 例如每天的5点10点00分执行任务,00 5,10 * * * cmd |
3、crond的概念和crontab是不可分割的
例如:每五分钟做一次服务器时间同步。要执行crontab这个命令,也需要启动一个服务crond才行。
4、安装crond
apt-get install cron
5、添加sheel脚本
(1)首先创建一个执行程序:vim a.sh
(2)编辑: #!/bin/bash
python3 python.py >> test2.log 2>&1
(3)添加权限:chmod +x ./a.sh
(4)查看执行结果:./a.sh
6、例子:14个超实用的Crontab使用实例
(1)每天 02:00 执行任务
0 2 * * * /bin/sh backup.sh
(2)每天 5:00和17:00执行任务
0 5,17 * * * /scripts/script.sh
(3)每分钟执行一次任务
* * * * * /scripts/script.sh
(4)每周日 17:00 执行任务
0 17 * * sun /scripts/script.sh
(5)每 10min 执行一次任务
*/10 * * * * /scripts/monitor.sh
(6)在特定的某几个月执行任务
* * * jan,may,aug * /script/script.sh
(7)在特定的某几天执行任务
0 17 * * sun,fri /script/scripy.sh #在每周五、周日的17点执行任务
(8)在某个月的第一个周日执行任务
0 2 * * sun [ $(date +%d) -le 07 ] && /script/script.sh
(9)每四个小时执行一个任务
0 */4 * * * /scripts/script.sh
(10)每周一、周日执行任务
0 4,17 * * sun,mon /scripts/script.sh
(11)每个30秒执行一次任务
我们没有办法直接通过上诉类似的例子去执行,因为最小的是1min。但是我们可以通过如下的方法。
* * * * * /scripts/script.sh
* * * * * sleep 30; /scripts/script.sh
(12)多个任务在一条命令中配置
* * * * * /scripts/script.sh; /scripts/scrit2.sh
(13)每年执行一次任务
@yearly /scripts/script.sh
注:@yearly 类似于“0 0 1 1 *”。它会在每年的第一分钟内执行,通常我们可以用这个发送新年的问候。
(14)系统重启时执行
@reboot /scripts/script.sh