• 382阅读
  • 1回复

Unix/Linux中常用的清理磁盘空间的命令

楼层直达
这里推荐几种Unix/Linux中常用的清理磁盘空间方法: Owt|vceT  
^R;Qa#=2  
第一种方法: cHr.7 w  
R>|)-"b( `  
find ./ -name "*.log*" -exec echo ">" {} \;|sh <Wz+f+HC  
(}^Qo^Vr  
这条命令的意思就是搜索当前目录下的以".log”结尾的文件,并将其清空,这种适合于日志长期存在并且不便直接删除的时候使用。使用“>”进行清空操作的时候 Ic!8$NhRS  
.LQvjK[N  
后面要加上"|sh”。 e3YdHp  
Rq,ST:  
第二种方法: 3d_PY,=1  
335\0~;3  
find ./ -name "*.log" -mtime +1 -exec compress {} \; v8PH(d2{@  
find ./ -name "*.log" -mtime +1 -exec rm {} \; N7}Y\1-8  
O:^m#:[cE  
这条命令的意思就是搜索当前目录下的以".log"结尾的文件,-mtime +1的意思就是文件的最后修改时间超过1天的,对满足这两种条件的文件进行压缩或者删除操 (txr%Z0E  
OI0tgkG  
作。 !"dn!X  
NEY b-#v  
第三种方法: >mWu+Nn:  
4t Z. T9d  
ls TRACE_*.log|perl -lne '@a=stat($_);if( (time()-$a[9])/3600 >6 ) {print "rm $_";}'|sh q/|WkV `m  
s3., N|  
ls ULOG.*[0-9]|perl -lne '@a=stat($_);if( (time()-$a[9])/3600 >24 ) {print "compress $_";}'|sh 0'{`"QD\IW  
1!;}#m7v  
ls大家很熟悉,就是列出当前文件夹下的文件,后面的perl -lne就是perl中很有用的命令行参数,stat是其中的一个函数,能够获得文件的各种状态,"$_"就是由前面的ls函数列出的文件名的通配符,time()是系统函数,获取当前的系统时间,"$a[9]"就是由前面的stat函数得到的文件状态a中第九个参数,也就是文件的时间,“if( (time()-$a[9])/3600 >6 )”的意思显而易见,就是指系统当前时间减去文件时间如果大于6个小时的话,就执行后面的操作。 A \6Q*VhK  
;4g_~fB  
第二条命令类似。 e>oE{_e  
Xc^7  
一般来说,可以找出系统中的各个程序的日志目录,并商定各个程序日志需要保留的时间,选用合适的命令,写成清理脚本,然后配置到系统的crontab中定期执行,这样就实现了磁盘空间的自动维护,这样就不会出现因为日志量过大而将系统磁盘空间占满而使程序不能正常执行的问题。 "eH~/6A  
H$ sNp\[{  
本文永久更新链接地址:http://www.linuxidc.com/Linux/2015-12/126515.htm {]a 6o[}u  
 
只看该作者 安逸沙发  发表于: 2019-10-28
我们先直接操作,然后在来说说有些什么原因导致磁盘使用很快的原因 nAlQ7 '  
FfT`;j  
先我们进入到/目录   Ml-6OvQ7g  
df -h 查看我们服务器的磁盘信息--如下字样表示的挂载点已经满了  _6vW F  
    /dev/vda1        40G  40G   0G  100% / \:LW(&[!  
接下来我们在进行筛选,看看到底是什么文件占用比较大,能删除的话我们可以直接先删除掉 8zW2zkv2|#  
du -h --max-depth=1 我们在查看当前目录下具体是哪一个目录里面占用比较大 Yrq~5)%  
第一次执行的时候可能会有一点点慢,不着急,耐心等待一下,显示出来的第一列就是该目录占用的总共大小,第二列就是目录 ;#< 0<  
最后一行的时候我们会看到.这个目录下,这个我们可以忽略掉,不要问我为什么能忽略 c'\dFb9a  
查看你的具体是哪一个目录占用比较大,那我们就进入到哪一个目录 }W^A*]X  
进入当目录之后还是使用  du -h --max-depth=1  来进行筛选查看目录下是文件还是目录占用大,如果是目录继续进行筛选 >uEzw4w  
筛选之后可以使用 ls –lhS 来进行文件从大到小排序,如果文件没有必要的用处的时候我们就可以对其进行删除操作了 M x" \5i  
总结: `r 4fm`<  
5~DJWi,  
其实在本次素材中,我们使用的到的Linux命令就四个 "qy,*{~  
cd / 进入到根目录 o}p n0KO,  
df -h 查看当前磁盘情况 -M#Wt`6A  
du -h --max-depth=1 查看当前目录下各目录的大小 A?OQE9'  
ls –lhS 查看当前目录下最大的文件 {R{=+2K!|k  
接下来我们来分析一下有哪些原因会造成磁盘占用快 {Qj~M<@3  
    1,生产环境中是否还是开启了不必要的日志记录,除了要做数据分析的日志其他日志能关就关掉 4E}Yt$|  
    2,是否存在僵尸文件,即已删除文件因句柄被占用未释放导致相应空间未释放。 P16~Qj  
    3,数据库中是否存在很多垃圾信息没及时清理掉,建议在开发阶段中不要使用生产环境的库 E2+`4g@{8<  
    4,是否有生成很多静态页面? \o3gKoL%  
    5,省略N字,写的不好的地方,欢迎大家补充 E' uZA  
快速回复

限100 字节
安逸网提示:如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
认证码:
上一个 下一个