热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

清理n天之外的文件(从手动到自动)清理磁盘

继上次磁盘空间满了造成jenkins构建不稳定,因此需要清理磁盘空间删除n天之外的文件首先,先查看磁盘空间:df命令用于显示目前在Linux系统上的文件系统磁盘使用情况统计df-


继上次磁盘空间满了造成jenkins构建不稳定,因此需要清理磁盘空间删除n天之外的文件



首先,先查看磁盘空间:


df
命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计



"df -h”以更易读的方式显示目前磁盘空间和使用情况。


"df -i” 以inode模式来显示磁盘使用情况。


"df -l” 
local 限制列出的文件结构。





对比df -h和df -i:


在df -h 和df -i  显示使用率100%,基本解决方法都是删除文件。


df -h   是去删除比较大无用的文件-----------大文件占用大量的磁盘容量。


df -i    则去删除数量过多的小文件-----------过多的文件占用了大量的inode号。



手动删除n天之外的文件



命令:


find /home/admin/logs/csp -mtime +7 -name "*.log*" -exec rm {} \;


命令详解:


find:linux的查找命令,用户查找指定条件的文件;


/home/weblogic/rc-server-tomcat-8081/logs:想要进行清理的文件目录;


-mtime:标准语句写法;


+7:查找7天前的文件,这里用数字代表天数;


"*.log":希望查找的数据类型


        "*.jpg"表示查找扩展名为jpg的所有文件,


         "*"表示查找所有文件,这个可以灵活运用,举一反三;


-exec:固定写法;


rm:
用于删除一个文件或者目录


        
* -i 删除前逐一询问确认。


        * -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认。


        * -r 将目录及以下之档案亦逐一删除。


rm -rf:强制删除文件,包括目录及子目录或文件;


{} \; :固定写法,一对大括号+空格+\+;



自动清理n天之外文件



每次手动执行语句太麻烦,我们可以考虑编写shell脚本自动清理:


1.创建shell脚本(地址自定义,文件名自定义。本文讲解以地址:
/home/admin/


文件名:auto-del-7-days-txt.sh为例


touch /home/admin/auto-del-7-days-txt.sh


2.编辑shell脚本


vi 
auto-del-7-days-txt.sh


也可以把1和2合并成一个命令:


新建加编辑该脚本:


sudo vi 
/home/admin/auto-del-7-days-txt.sh





将我们之前手动删除文件的命令粘到该shell脚本里


#!/bin/sh


find /home/admin/logs/csp -mtime +7 -name "*.log*" -exec rm {} \;





退出编辑模式(Esc)保存并退出(:wq)


3.给该shell脚本分配可运行权限


sudo chmod  755 auto-del-7-days-txt.sh


查看权限是否分配成功:


cd /home/admin


ls





该文件变绿即为分配权限成功


4.计划任务


crontab  -e 编辑crontab服务文件


将auto-del-7-days-txt.sh执行脚本加入到系统计划任务,到点自动执行


命令:
10 0 * * * /home/admin/auto-del-7-days-txt.sh >/dev/null 2>&1


解析:


10 0 * * *:
每天凌晨0点10分定期执行auto-del-7-days-txt.sh文件进行数据清理任务。


> /dev/null 2>&1:
当程序在你所指定的时间执行后,系统会发一封邮件给当前的用户,显示该程序执行的内容,若是你不希望收到这样的邮件,请在每一行空一格之后加上 > /dev/null 2>&1 即可






编辑完crontab文件后,提示
crontab: installing new crontab


官方文档解释:
新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,当然你可以重启 cron 来马上执行。


看该用户下的crontab服务是否创建成功, 用 crontab  -l 命令


服务创建成功:





5.启动
crontab任务


一般启动服务用  /sbin/service crond start;


若是根用户的cron服务可以用 sudo service crond start





查看crontab任务的执行情况:


方法一、查看
crontab任务的执行状态:
service crond status


我在执行这个命令的时候出现了连接超时的情况:


上面已经加载启用了,到后面不知道问什么又
无法创建会话:连接超时






方法二、可以使用查看其执行日志的方式:


查看已经执行过的任务,
看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron查看





两种方式查看,一个提示成功,一个提示失败,我裂开了呀,看明天的执行结果吧,会持续更新。。。。。。


推荐阅读
author-avatar
覃思慧_419
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有