[toc]

定时任务

crond(计划任务)

1
2
3
4
5
6
7
8
9
10
11
12
# crond(计划任务)
crond就是计划任务,类似于我们平时生活中的闹钟,定点执行。

# crond的作用
## 系统级别的定时任务
临时文件清理
系统信息采集
日志文件切割
## 用户级别的定时任务
定时向互联网同步时间
定时备份系统配置文件
定时备份数据库的数据

Crontab配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# crontab配置文件解析

# crontab配置文件路径
vim /etc/crontab

# 配置文件解析
SHELL=/bin/bash # 执行命令的解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin # 环境变量
MAILTO=root # 邮件发给谁
# Example of job definition:
# .---------------- minute (0 - 59) #分钟
# | .------------- hour (0 - 23) #小时
# | | .---------- day of month (1 - 31) #日期
# | | | .------- month (1 - 12) OR jan,feb,mar,apr #月份
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat #星期
# | | | | |
# * * * * * user-name command to be executed
分 时 日 月 周
# * 表示任意的(分、时、日、月、周)时间都执行
# - 表示一个时间范围段, 如5-7点
# , 表示分隔时段, 如6,0,4表示周六、日、四
# /1 表示每隔n单位时间, 如*/10 每10分钟

crontab命令选项

1
2
3
4
5
6
7
8
9
10
# crontab

# 语法结构
crontab 选项

# 选项
-e # 编辑定时任务
-l # 查看定时任务
-r # 删除定时任务
-u # 指定其他用户

时间同步定时任务

1
2
3
4
5
6
7
8
9
10
11
12
13
# 下载时间同步命令
yum install -y ntpdate

# 测试命令是否可以正常执行
ntpdate time1.aliyun.com
24 Nov 16:32:44 ntpdate[13632]: adjust time server 203.107.6.88 offset -0.000621 sec

# 编写定时任务
crontab -e
# usage sync Date by:chenlin_2020/11/24 # 任务描述
* * * * * /usr/sbin/ntpdate time1.aliyun.com # 任务执行时间及内容(命令要输绝对路径)
# PS:
which 命令 # 使用which查看指定命令的路径

备份定时任务

任务需求

1
2
3
4
# 将备份命令写入一个脚本中
1.每天备份文件名要求格式:2018-02-20_hostname_etc.tar.gz
2.存放备份内容的目录要求只保留3天的数据
3.在执行计划任务时,不要输出任务信息

创建脚本

1
2
3
4
5
6
7
8
9
10
11
# 创建并编辑脚本文件
vim backup_etc.sh

# 创建变量
bak_dir='/backup'

# 指定格式的文件名
cd / && tar zcf $bak_dir/$(date +%F)_$(hostname)_etc.tar.gz etc

# 只保留三天数据
find $bak_dir -type f ! -mtime -3 | xargs rm -f

创建定时任务

1
2
3
4
5
6
7
8
9
# 新建定时任务
crontab -e

# 编写定时任务
* 03 * * * /bin/sh /root/back_etc.sh &>/dev/null

# PS:
在定时任务中 &>/dev/null # 不输出信息
which 命令 # 使用which查看指定命令的路径

Linux定时发邮件

安装并配置邮箱账户

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 安装mailx
yum install -y mailx

# 配置发件人
vim /etc/mail.rc

# 在最后一行添加配置信息
## 发件人
set from=chenlin.h@foxmail.com
## QQ邮箱使用的邮件协议
set smtp=smtps://smtp.qq.com:465
## 发件人账号
set smtp-auth-user=chenlin.h@foxmail.com
## 发件人密码
set smtp-auth-password=******
## 认证登录
set smtp-auth=login
## 忽略证书
set ssl-verify=ignore
## 证书存放目录
set nss-config-dir=/etc/pki/nssdb/

创建脚本

1
2
3
4
5
6
7
8
9
10
11
12
# 创建邮件文本文件
mkdir /mail && cd /mail && vim 1.txt
月明风起杏花稀,
长亭古道柳依依落红满地花带雨,
残帘半卷泪盈堤孤雁一只归何处?望断楚天遥无期

# 创建脚本文件
vim send_mail.sh

# 编辑脚本文件
#!/bin/bash
cat /love/1.txt/ | mail -s '致我最爱的猪猪宝贝' 123456789@qq.com

创建定时任务

1
2
3
4
5
6
7
8
9
10
# 新建定时任务
crontab -e

# 编写定时任务
#send qingshu to 猪猪宝贝
* 12 * * * /bin/sh /love.sh &>/dev/null

# PS:
在定时任务中 &>/dev/null # 不输出信息
which 命令 # 使用which查看指定命令的路径