由于项目日志每天比较多
想写个脚本,自动压缩日志并删除源文件 只保留压缩文件 减轻服务器内存压力
[root@cvm3513 ~]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# 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
备注: 1) * 表示任意的(分、时、日、月、周)时间都执行 2) - 表示一个时间范围段, 如5-7点 3) , 表示分隔时段, 如6,0,4表示周六、日、四 4) /1 表示每隔n单位时间, 如*/10 每10分钟
crontab命令选项
-e #编辑定时任务
-l #查看定时任务
-r #删除定时任务
-u #指定其他用户
[root@cvm3513 ~]# crontab -l
*/1 * * * * /root/geo_timing.sh
[root@cvm3513 ~]# crontab -e
*/1 * * * * /root/geo_timing.sh
Type :quit<Enter> to exit Vim
[root@cvm3513 ~]# crontab -r 过于恐怖 建议删除任务时使用crontab -e 删除掉不要的那个
1.创建 编写 测试脚本
[root@cvm3513 ~]# touch geo_timing.sh
[root@cvm3513 ~]# vi geo_timing.sh
echo "hello word" >> /root/test.txt
~
-- INSERT --
#给脚本授权
[root@cvm3513 ~]# chmod +x geo_timing.sh
[root@cvm3513 ~]# ls
220311_geo_log.tar anaconda-ks.cfg geo_timing.sh logs
2.先命令执行
[root@cvm3513 ~]# sh geo_timing.sh
[root@cvm3513 ~]# cat test.txt
hello word
[root@cvm3513 ~]#
3.编写压缩命令和删除命令 命令从上往下执行 先保存 在删除原文件
[root@cvm3513 ~]# vi geo_timing.sh
#echo "hello word" >> /root/test.txt
#压缩文件前面加上日期 压缩/root/logs 下面所有文件
tar czvf $(date +"%y%m%d")_geo_log.tar /root/logs
#删除 /root/logs 下面所有文件
rm -rf /root/logs/*
~
-- INSERT --
4.命令测试 测试完成删除压缩包
[root@cvm3513 /]# cd root/
[root@cvm3513 ~]# ls
anaconda-ks.cfg geo_timing.sh logs test.txt
[root@cvm3513 ~]# cd logs
[root@cvm3513 logs]# ls
tap-water.system-dev.2021-12-17.0.log
[root@cvm3513 logs]# cd ../
#执行脚本
[root@cvm3513 ~]# sh geo_timing.sh
tar: 从成员名中删除开头的“/”
/root/logs/
/root/logs/tap-water.system-dev.2021-12-17.0.log
[root@cvm3513 ~]# ls
220311_geo_log.tar anaconda-ks.cfg geo_timing.sh logs test.txt
[root@cvm3513 ~]# cd logs/
[root@cvm3513 logs]# ls
[root@cvm3513 logs]# cd ../
[root@cvm3513 ~]# ls
220311_geo_log.tar anaconda-ks.cfg geo_timing.sh logs test.txt
#解压
[root@cvm3513 ~]# tar xzvf 220311_geo_log.tar
root/logs/
root/logs/tap-water.system-dev.2021-12-17.0.log
[root@cvm3513 ~]# ls
220311_geo_log.tar anaconda-ks.cfg geo_timing.sh logs root test.txt
#查看解压文件
[root@cvm3513 ~]# cd root/logs/
[root@cvm3513 logs]# ls
tap-water.system-dev.2021-12-17.0.log
[root@cvm3513 logs]#
5.编写定时任务 我这里测试每隔一分钟执行一次 实际按照表达式去操作
[root@cvm3513 root]# crontab -e
*/1 * * * * /root/geo_timing.sh
~
-- INSERT --
[root@cvm3513 root]# crontab -e
crontab: installing new crontab
[root@cvm3513 root]# crontab -l
*/1 * * * * /root/geo_timing.sh
[root@cvm3513 root]#
[root@cvm3513 root]# ls
您在 /var/spool/mail/root 中有新邮件
[root@cvm3513 root]# cd ../
#已经生成新的压缩文件 logs 原文件已被删除
[root@cvm3513 ~]# ls
220311_geo_log.tar anaconda-ks.cfg geo_timing.sh logs test.txt
[root@cvm3513 ~]# cd logs
[root@cvm3513 logs]# ls
[root@cvm3513 logs]#