Linux 查看空间使用情况的实例详解
Linux查看空间使用情况的实例详解
在日常的Linux巡检中,我们会遇到文件系统目录使用空间很高的情况,例如如下利用”df-h“查看到根目录空间使用超过80%。而我们仅仅知道是根目录空间使用过高,这样是不够的。还需要知道是目录还是文件让根目录空间使用过高。通常我们使用的命令是”du-sh*”。
第一步:查看Linux系统的文件系统使用情况,如下可以看到根目录”/”已经使用81%。
[root@hostname~]#df-h FilesystemSizeUsedAvailUse%Mountedon /dev/sda667G51G13G81%/ tmpfs16G152K16G1%/dev/shm /dev/sda399G188M94G1%/arch /dev/sda1197G188M187G1%/u01 /dev/sda2197G50G138G27%/u02
第二步:进入根目录,利用du-sh命令查询各个目录或者文件占用空间的情况,因为/u02是独立的文件系统,所以可以忽略。我们关注的是root这个目录,占用了空间47G。
[root@hostname~]#cd/ [root@hostname/]#du-sh* 20Karch 7.6Mbin 27Mboot 324Kdev 36Metc 36Khome 136Mlib 26Mlib64 16Klost+found 4.0Kmedia 0misc 4.0Kmnt 0net 8.0Kopt 4.0Korbit-root --省略/proc目录统计的报错 0proc 47Groot##根目录文件系统使用最大的目录 15Msbin 0selinux 4.0Ksrv 0sys 80Ktmp 20Ku01 49Gu02
第三步:进入root目录,其实也是root用户的主目录。我们从ls命令可以猜到可能是【apache-tomcat-6.0.36-linux】这个tomcat的程序目录占用比较多。
[root@hostname/]#cdroot [root@hostname~]#ls anaconda-ks.cfgapache-tomcat-6.0.36-linuxDesktopDocumentsDownloadsinstall.loginstall.log.syslogMusicPicturesPublicTemplatesVideos
第四步:通过统计发现,确实是【apache-tomcat-6.0.36-linux】这个目录占用了47G。但是到此问题还没有结束,因为既然是应用程序的目录,根据我的经验很可能是tomcat的日志文件占用空间比较多。
[root@hostname~]#du-sh* 4.0Kanaconda-ks.cfg 47Gapache-tomcat-6.0.36-linux 4.0KDesktop 4.0KDocuments 4.0KDownloads 56Kinstall.log 12Kinstall.log.syslog 4.0KMusic 4.0KPictures 4.0KPublic 4.0KTemplates 4.0KVideos
第五步:既然看到有tomcat的目录,很可能这个tomcat运行着,利用ps命令查看是否有tomcat的进程,一般可以过滤java这个关键词。如下,果然有tomcat在运行着。那么很可能占用空间最多就是tomcat的日志文件。
[root@hostname~]#ps-ef|grepjava root48794836008:26pts/000:00:00grepjava root11864147Aug16?26-03:11:29/usr/bin/java-Djava.util.logging.config.file=/root/apache-tomcat-6.0.36-linux/conf/logging.properties-Xms512m-Xmx1024m-XX:PermSize=128M-XX:MaxPermSize=256m-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager-Djava.endorsed.dirs=/root/apache-tomcat-6.0.36-linux/endorsed-classpath/root/apache-tomcat-6.0.36-linux/bin/bootstrap.jar-Dcatalina.base=/root/apache-tomcat-6.0.36-linux-Dcatalina.home=/root/apache-tomcat-6.0.36-linux-Djava.io.tmpdir=/root/apache-tomcat-6.0.36-linux/temporg.apache.catalina.startup.Bootstrapstart
第六步:进入tomcat的程序目录,查看哪个目录占用的空间最大。如下,发现是一个【fare】的目录占用了46G,而【logs】是日志目录却占用了23M。
[root@hostname~]#cdapache-tomcat-6.0.36-linux [root@hostnameapache-tomcat-6.0.36-linux]#ls backupbinconffarelibLICENSElogsNOTICERELEASE-NOTESRUNNING.txttempwebappswork [root@hostnameapache-tomcat-6.0.36-linux]#du-sh* 92Kbackup 882Mbin 108Kconf 46Gfare 6.8Mlib 40KLICENSE 23Mlogs 4.0KNOTICE 12KRELEASE-NOTES 16KRUNNING.txt 7.9Mtemp 188Mwebapps 7.1Mwork
第七步:继续一探究竟【fare】目录里面到底存放的是什么类型的目录或者文件。如下看到有很多类似日志文件,如common.log和pricing.log。通过和开发人员沟通之后,确定确实日志文件。
[root@hostnameapache-tomcat-6.0.36-linux]#cdfare [root@hostnamefare]#ls common.logcommon.log.2017-09-21common.log.2017-10-03pricing.log.2017-09-10pricing.log.2017-09-22pricing.log.2017-10-04 common.log.2017-09-10common.log.2017-09-22common.log.2017-10-04pricing.log.2017-09-11pricing.log.2017-09-23pricing.log.2017-10-05 common.log.2017-09-11common.log.2017-09-23common.log.2017-10-05pricing.log.2017-09-12pricing.log.2017-09-24pricing.log.2017-10-06 common.log.2017-09-12common.log.2017-09-24common.log.2017-10-06pricing.log.2017-09-13pricing.log.2017-09-25pricing.log.2017-10-07 common.log.2017-09-13common.log.2017-09-25common.log.2017-10-07pricing.log.2017-09-14pricing.log.2017-09-26pricing.log.2017-10-08 common.log.2017-09-14common.log.2017-09-26common.log.2017-10-08pricing.log.2017-09-15pricing.log.2017-09-27pricing.log.2017-10-09 common.log.2017-09-15common.log.2017-09-27common.log.2017-10-09pricing.log.2017-09-16pricing.log.2017-09-28spring.log common.log.2017-09-16common.log.2017-09-28common.zippricing.log.2017-09-17pricing.log.2017-09-29struts2.log common.log.2017-09-17common.log.2017-09-29framework.logpricing.log.2017-09-18pricing.log.2017-09-30xwork2.log common.log.2017-09-18common.log.2017-09-30hibernate.logpricing.log.2017-09-19pricing.log.2017-10-01 common.log.2017-09-19common.log.2017-10-01hibernate.log.2017-01-03pricing.log.2017-09-20pricing.log.2017-10-02 common.log.2017-09-20common.log.2017-10-02pricing.logpricing.log.2017-09-21pricing.log.2017-10-03
第八步:继续查看哪个目录或者文件占用的空间最大,发现都是common.log和pricing.log相关的文件占用的空间最大,都是700M以上。至此,已经查明占用根目录”/”空间最多的原因是tomcat的日志文件太多,而且每一个日志文件都很大。
[root@hostnamefare]#du-sh*|sort-h 0framework.log 0hibernate.log.2017-01-03 0spring.log 0struts2.log 0xwork2.log 4.0Khibernate.log 17Mcommon.zip 215Mpricing.log 216Mcommon.log 667Mpricing.log.2017-10-08 668Mcommon.log.2017-10-08 674Mcommon.log.2017-10-05 674Mpricing.log.2017-10-05 678Mcommon.log.2017-10-07 678Mpricing.log.2017-10-07 679Mcommon.log.2017-10-06 679Mpricing.log.2017-10-06 683Mcommon.log.2017-10-04 683Mpricing.log.2017-10-04 690Mpricing.log.2017-09-10 691Mcommon.log.2017-09-10 711Mcommon.log.2017-09-12 711Mpricing.log.2017-09-12 719Mpricing.log.2017-09-11 720Mcommon.log.2017-09-11 737Mcommon.log.2017-09-30 737Mpricing.log.2017-09-28 737Mpricing.log.2017-09-30 738Mcommon.log.2017-09-28 742Mcommon.log.2017-09-29 742Mpricing.log.2017-09-29 744Mpricing.log.2017-10-09 745Mcommon.log.2017-10-09 751Mcommon.log.2017-10-01 751Mpricing.log.2017-10-01 754Mcommon.log.2017-09-13 754Mpricing.log.2017-09-13 760Mcommon.log.2017-10-03 760Mpricing.log.2017-10-03 783Mpricing.log.2017-10-02 784Mcommon.log.2017-10-02 791Mpricing.log.2017-09-18 792Mcommon.log.2017-09-18 797Mcommon.log.2017-09-27 797Mpricing.log.2017-09-27 804Mcommon.log.2017-09-17 804Mcommon.log.2017-09-19 804Mpricing.log.2017-09-17 804Mpricing.log.2017-09-19 808Mcommon.log.2017-09-26 808Mpricing.log.2017-09-26 815Mpricing.log.2017-09-24 816Mcommon.log.2017-09-24 821Mcommon.log.2017-09-14 821Mpricing.log.2017-09-14 821Mpricing.log.2017-09-23 822Mcommon.log.2017-09-23 826Mcommon.log.2017-09-25 826Mpricing.log.2017-09-25 827Mcommon.log.2017-09-16 827Mpricing.log.2017-09-15 827Mpricing.log.2017-09-16 828Mcommon.log.2017-09-15 831Mcommon.log.2017-09-22 831Mpricing.log.2017-09-22 851Mcommon.log.2017-09-21 851Mpricing.log.2017-09-21 860Mcommon.log.2017-09-20 860Mpricing.log.2017-09-20
第九步:从文件的命令规律,可以看出日志文件日期保留一个月,检查root用户是否有定时删除日志文件计划。如下命令查看所示,确实有每天凌晨03:15进行日志文件删除的计划。但是由于日志文件太多和根目录空间大小原因,导致根目录空间使用比例过高。在有部署自动监控工具,如zabbix等,会自动发送告警。
[root@hostname~]#crontab-l 153***/u02/shell/rm_log_pricing.sh [root@hostname~]#cat/u02/shell/rm_log_pricing.sh find/root/apache-tomcat-6.0.36-linux/bin/fare/-name"common.log.2*"-mtime+30|xargsrm-f find/root/apache-tomcat-6.0.36-linux/bin/fare/-name"pricing.log.2*"-mtime+30|xargsrm-f
总结:
从运维的角度,不建议tomcat等应用程序部署在和Linux操作系统相关的文件系统中,尤其是直接部署在根目录下。一般都建议使用独立的文件系统来部署应用程序,无论从IO性能监控,文件系统空间使用监控都是有利的。
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!