一、tar 命令备份
参数:-c: 建立压缩档案、-z:有gzip属性的、-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名
有三个文件
我们将当前目录下的文件全部打包
利用date生成特定文件名称
tar -czf log-`date +%Y%m%d`.tar.gz ./
二、crontab
我们先查看下命令
crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行。
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
或者这个表好理解一点
在时间表示中,还有一些特殊符号需要学习
一些帮助理解的例子
做一个简单的练习,在当前目录下,创建一个文件
让系统每隔 2 分钟就向 test1 文件中写入一行"xlglvc",验证一下系统定时任务是否会执行
首先进入编辑模式
编辑命令
*/2 * * * * /bin/echo "xlglvc" >> /data/tarTest/test1
我们查看这个文件信息
我们可以使用下面的命令查询当前用户定时任务或删除当前用户定时任务
查询当前用户定时任务
删除当前用户定时任务
我们把上面的打包压缩命令做一下更改,将打包压缩命令放到脚本中
我们将时间范围缩小到秒
tar -czf log-`date +%Y%m%d_%H%M%S`.tar.gz ./
执行脚本
系统每分钟执行一次这个脚本
我们查看下任务
我们查看这个内容
更改下文件权限,我们再查看任务
可以考虑下面三个练习
1、让系统在每周一的凌晨3点01分重启一次
2、在每月1日、10日、15 日的凌晨 00 点 30 分都定时执行日志备份脚本
3、结合前面邮件的发送命令,定时发送打包的压缩文件
网上练习参考
##每月每天凌晨3点30分和中午12点20分执行test.sh脚本
30 3,12 * * * /home/test.sh
##每月每天每隔6小时的每30分钟执行test.sh脚本
30 */6 * * * /home/test.sh
##每月每天早上8点到下午18点每隔2小时的每30分钟执行test.sh脚本
30 8-18/2 * * * /etc/init.d/network restart
##每月每天晚上21点30分执行test.sh脚本
30 21 * * * /etc/init.d/network restart
##每月1号、10号、22号凌晨4点45分执行test.sh脚本
45 4 1,10,22 * * /etc/init.d/network restart
##8月份周一、周日凌晨1点10分执行test.sh脚本
10 1 * 8 6,0 /etc/init.d/network restart
##每月每天每小时整点执行test.sh脚本
00 */1 * * * /etc/init.d/network restart
在书写 crontab 定时任务时,需要注意以下几个事项:
1、6 个选项都不能为空,必须填写。如果不确定,则使用"*"代表任意时间。
2、crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
3、在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
4、在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。