Linux下查看⽂件和⽂件夹⼤⼩删除⽇志
场景:在sts中执⾏⾃动部署时候maven提⽰No space left on device错误,后来经检查发现是磁盘空间满了,⽤下⾯的⽅法分析发现tomcat下⾯的logs⽬录占⽤了很⼤的空间,删除多余的⽇志问题解决!
1 Linux下查看⽂件和⽂件夹⼤⼩
当磁盘⼤⼩超过标准时会有报警提⽰,这时如果掌握df和du命令是⾮常明智的选择。
df可以查看⼀级⽂件夹⼤⼩、使⽤⽐例、档案系统及其挂⼊点,但对⽂件却⽆能为⼒。
du可以查看⽂件及⽂件夹的⼤⼩。
两者配合使⽤,⾮常有效。⽐如⽤df查看哪个⼀级⽬录过⼤,然后⽤df查看⽂件夹或⽂件的⼤⼩,如此便可迅速确定症结。
下⾯分别简要介绍
1.1 df命令
//可以⽤来查看分区的⽂件系统
df -T
df命令可以显⽰⽬前所有⽂件系统的可⽤空间及使⽤情形,请看下列这个例⼦:
df -h
参数 -h 表⽰使⽤「Human-readable」的输出,也就是在档案系统⼤⼩使⽤ GB、MB 等易读的格式。
上⾯的命令输出的第⼀个字段(Filesystem)及最后⼀个字段(Mounted on)分别是档案系统及其挂⼊点。我们可以看到 /dev/sda1 这个分割区被挂在根⽬录下。
接下来的四个字段 Size、Used、Avail、及 Use% 分别是该分割区的容量、已使⽤的⼤⼩、剩下的⼤⼩、及使⽤的百分⽐。 FreeBSD下,当硬盘容量已满时,您可能会看到已使⽤的百分⽐超过 100%,
因为 FreeBSD 会留⼀些空间给 root,让 root 在档案系统满时,还是可以写东西到该档案系统中,以进⾏管理。
1.2 du命令
ps:实战经验,两者配合使⽤
//查看系统中⽂件的使⽤情况
df -h
//查看当前⽬录下各个⽂件及⽬录占⽤空间⼤⼩
du -sh *
//⽅法⼀:切换到要删除的⽬录,删除⽬录下的所有⽂件
rm -f *
//⽅法⼆:删除logs⽂件夹下的所有⽂件,⽽不删除⽂件夹本⾝
rm -rf log/*
下⾯的删除⽅式暂未尝试。
ls *.log | xargs rm -f
du:查询⽂件或⽂件夹的磁盘使⽤空间
如果当前⽬录下⽂件和⽂件夹很多,使⽤不带参数du的命令,可以循环列出所有⽂件和⽂件夹所使⽤的空间。这对查看究竟是那个地⽅过⼤是不利的,所以得指定深⼊⽬录的层数,参数:--max-depth=,这是个极为有⽤的参数!
如下,注意使⽤“*”,可以得到⽂件的使⽤空间⼤⼩.
提醒:⼀向命令⽐linux复杂的FreeBSD,它的du命令指定深⼊⽬录的层数却是⽐linux简化,为 -d。
du -h --max-depth=1 /home
下⾯的命令与上⾯的命令有什么异同??
答:du -h --max-depth=1 /home仅列出home⽬录下⾯所有的⼀级⽬录⽂件⼤⼩;
du -h --max-depth=1 /home/* 列出home下⾯所有⼀级⽬录的⼀级⽬录⽂件⼤⼩。
du -h --max-depth=1 /home/*
1.3 查看linux⽂件⽬录的⼤⼩和⽂件夹包含的⽂件数
统计总数⼤⼩
du -sh xmldb/
du -sm * | sort -n //统计当前⽬录⼤⼩并安⼤⼩排序
du -sk * | sort -n
du -sk * | grep guojf //看⼀个⼈的⼤⼩
du -m | cut -d "/" -f 2 //看第⼆个/ 字符前的⽂字
查看此⽂件夹有多少⽂件 /*/*/* 有多少⽂件
du xmldb/
du xmldb/*/*/* |wc -l
linux查看当前文件夹内容40752
解释:
wc [-lmw]
参数说明:
-l :多少⾏
-m:多少字符
-w:多少字
1.4 Linux:ls以K、M、G为单位查看⽂件⼤⼩ps:注意man命令的使⽤,按“q”键可以退出man查询。
#man ls
……
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
# ls
cuss.war    nohup.out
# ls -l
total 30372
-rw-r--r--    1 root root 31051909 May 24 10:07 cuss.war
-rw-------    1 root root          0 Mar 20 13:52 nohup.out
# ls -lh
total 30M
-rw-r--r--    1 root root 30M May 24 10:07 cuss.war
-rw-------    1 root root    0 Mar 20 13:52 nohup.out
# ll -h
total 30M
-rw-r--r--    1 root root 30M May 24 10:07 cuss.war
-rw-------    1 root root    0 Mar 20 13:52 nohup.out
2 删除系统⽇志等
2.1 规范
linux下删除指定⽂件之外的其他⽂件
⼀、下删除⽂件和⽂件夹常⽤命令如下:
删除⽂件: rm file  www.2cto
删除⽂件夹: rm -rf dir
需要注意的是, rmdir 只能够删除空⽂件夹。
⼆、删除指定⽂件(夹)之外的所有⽂件呢?
说明: ls先得到当前的所有⽂件和⽂件夹的名字, grep -v keep,进⾏grep正则匹配查keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有⽂件名,然后 xargs⽤于从标准输⼊获得参数并且传递给后⾯的命令,这⾥使⽤的命令是 rm,然后由rm删除前⾯选择的⽂件。
好处:使⽤了grep来正则表达式来匹配⽂件名字,可以⼀次保留多个⽂件,从⽽进⾏更加准确的处理。
说明,⽤grep⽽不⽤find -name选取名字,因为find选取名字时⽐较⿇烦,对正则表达式⽀持不够,⽆法排除指定⽂件名。
说明:上⾯第⼆⾏的代码效率⾼些,原因在于删除多个⽂件时 -exec会启动多个进程来处理,⽽xargs会启动⼀个rm进程来处理。
3 实践
删除要慎重
3.1 保留删除
#删除⽣成 core,mbox等⽂件
find / -name core|xargs rm –rf
#删除⽇志
rm -rf /var/log/*
问题:⽇志⽂件中有很多⽂件,我想删除除debug.log 和sys.out ⽂件外的所有⽂件。
⾸先我要能够到debug.log和sys.out这两个⽂件——
#建⽴查规则
^debug.log$
^sys.out$
尝试查:
linux-hipe:/home/tws/server/basedata-server/logs # ls | grep -
debug.log
sys.out
删除要保留⽂件外的其它⽂件:
ls | grep - |xargs rm
#记得加v,保留要保留的⽂件,不要删错了
#删除,⽂件名中带有数字,超过30天的⽇志:
find -mtime +30 -name "*[0-9]*" -exec rm {} \;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。