【shell项目实战】 日志删除

日志删除

删除日志要求

1.定期删除/data目录下修改时间大于7天的日志文件
2.定期删除/data/YY-MM-DD.tar.gz
该目录仅工作日自动生成YY-MM-DD.tar.gz文件
希望只保留最近2天的文件
无论节假日/data仍只会保留前2个工作日文件

1.定期删除大于2天的日志

linux中修改时间用-mtime

[klaus@localhost project]$ ll data/
total 0
-rw-rw-r--. 1 klaus klaus 0 Feb 13 00:00 2020-02-13.txt
-rw-rw-r--. 1 klaus klaus 0 Feb 14 00:00 2020-02-14.txt
-rw-rw-r--. 1 klaus klaus 0 Feb 15 00:00 2020-02-15.txt
-rw-rw-r--. 1 klaus klaus 0 Feb 16 00:12 2020-02-16.txt
[klaus@localhost project]$ find data/ -mtime +2 -exec rm -rvf {} \;
removed `data/2020-02-13.txt'

具体用法 find 目录 -mtime +天数 -name “文件名” -exec rm -rf {} ;这里加了v只是方便显示操作过程,也可以用下面的用法

[klaus@localhost project]$ ll data/
total 4
-rw-rw-r--. 1 klaus klaus   0 Feb 11 00:00 2020-02-11.txt
-rw-rw-r--. 1 klaus klaus   0 Feb 12 00:00 2020-02-12.txt
-rw-rw-r--. 1 klaus klaus   0 Feb 13 00:00 2020-02-13.txt
-rw-rw-r--. 1 klaus klaus   0 Feb 14 00:00 2020-02-14.txt
-rw-rw-r--. 1 klaus klaus   0 Feb 15 00:00 2020-02-15.txt
-rwxrwxr-x. 1 klaus klaus 118 Feb 16 00:29 file_creat.sh
[klaus@localhost project]$ find data/ -mtime +2
data/2020-02-12.txt
data/2020-02-11.txt
data/2020-02-13.txt
[klaus@localhost project]$ find data/ -mtime +2 | xargs rm -rvf
removed `data/2020-02-12.txt'
removed `data/2020-02-11.txt'
removed `data/2020-02-13.txt'

大于7天,只要把2改成7就行,上述命令是删除2天之前的文件。

2.删除日志要求2

其实要求2可以看成,我们先把日志按生成时间从新到旧顺序排序,保留前面最新的2天文件就行,节假日不会生成日志文件

[klaus@localhost project]$ ls -t data/
file_creat.sh  2020-02-15.tar.gz  2020-02-14.tar.gz  2020-02-13.tar.gz  2020-02-12.tar.gz  2020-02-11.tar.gz
[klaus@localhost project]$ ls -t data/ | awk 'NR>3'
2020-02-13.tar.gz
2020-02-12.tar.gz
2020-02-11.tar.gz

上面NR>3是因为前面有一个file_creat.sh的脚本占据了一行,所有是3

然后把删除命令加进去就可以了,上面2种写法任选一

[klaus@localhost project]$ ls -t data/*.tar.gz | awk 'NR>2' | xargs rm -rvf
removed `data/2020-02-13.tar.gz'
removed `data/2020-02-12.tar.gz'
removed `data/2020-02-11.tar.gz'

3.其他必要

3.1 计入计划任务

这里是每天检查一次

[klaus@localhost project]$ sudo crontab -e
**1** /home/klaus/Desktop/shell/project/filecheck.sh

其中前面5个*分别代表分 时 日 月 周 命令,每天检查一次,其中,大家可能需要用到修改时间的命令,可以通过设置时间和同步网络命令

3.2 生成特特定时间的文件

sudo date -s 02/15/20;touch `date +%F`.txt

3.3 网络时间同步

[klaus@localhost data]$ sudo yum install ntpdate -y
[klaus@localhost data]$ sudo ntpdate ntp1.aliyun.com
sudo: timestamp too far in the future: Feb 16 00:21:25 2020

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

    #1) Respect the privacy of others.
    #2) Think before you type.
    #3) With great power comes great responsibility.

[sudo] password for klaus:
16 Feb 00:21:38 ntpdate[12399]: step time server 120.25.115.20 offset 260485.948055 sec
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值