Linux 查看空间使用情况的实例详解

Linux 查看空间使用情况的实例详解

在日常的Linux巡检中,我们会遇到文件系统目录使用空间很高的情况,例如如下利用”df -h “查看到根目录空间使用超过80%。而我们仅仅知道是根目录空间使用过高,这样是不够的。还需要知道是目录还是文件让根目录空间使用过高。通常我们使用的命令是”du -sh *”。

第一步:查看Linux系统的文件系统使用情况,如下可以看到根目录”/”已经使用81%。


[root@hostname ~]# df -h
Filesystem      Size Used Avail Use% Mounted on
/dev/sda6       67G  51G  13G 81% /
tmpfs         16G 152K  16G  1% /dev/shm
/dev/sda3       99G 188M  94G  1% /arch
/dev/sda1       197G 188M 187G  1% /u01
/dev/sda2       197G  50G 138G 27% /u02

第二步:进入根目录,利用du -sh 命令查询各个目录或者文件占用空间的情况,因为/u02是独立的文件系统,所以可以忽略。我们关注的是root这个目录,占用了空间47G。

[root@hostname ~]# cd /

[root@hostname /]# du -sh *
20K   arch
7.6M  bin
27M   boot
324K  dev
36M   etc
36K   home
136M  lib
26M   lib64
16K   lost+found
4.0K  media
0    misc
4.0K  mnt
0    net
8.0K  opt
4.0K  orbit-root
--省略/proc目录统计的报错
0    proc
47G   root  ##根目录文件系统使用最大的目录
15M   sbin
0    selinux
4.0K  srv
0    sys
80K   tmp
20K   u01
49G   u02

第三步:进入root目录,其实也是root用户的主目录。我们从ls命令可以猜到可能是【apache-tomcat-6.0.36-linux】这个tomcat的程序目录占用比较多。

[root@hostname /]# cd root
[root@hostname ~]# ls
anaconda-ks.cfg apache-tomcat-6.0.36-linux Desktop Documents Downloads install.log install.log.syslog Music Pictures Public Templates Videos

第四步:通过统计发现,确实是【apache-tomcat-6.0.36-linux】这个目录占用了47G。但是到此问题还没有结束,因为既然是应用程序的目录,根据我的经验很可能是tomcat的日志文件占用空间比较多。

[root@hostname ~]# du -sh *
4.0K  anaconda-ks.cfg
47G   apache-tomcat-6.0.36-linux
4.0K  Desktop
4.0K  Documents
4.0K  Downloads
56K   install.log
12K   install.log.syslog
4.0K  Music
4.0K  Pictures
4.0K  Public
4.0K  Templates
4.0K  Videos

第五步:既然看到有tomcat的目录,很可能这个tomcat运行着,利用ps命令查看是否有tomcat的进程,一般可以过滤java这个关键词。如下,果然有tomcat在运行着。那么很可能占用空间最多就是tomcat的日志文件。

[root@hostname ~]# ps -ef|grep java
root   4879 4836 0 08:26 pts/0  00:00:00 grep java
root   11864   1 47 Aug16 ?    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/temp org.apache.catalina.startup.Bootstrap start

第六步:进入tomcat的程序目录,查看哪个目录占用的空间最大。如下,发现是一个【fare】的目录占用了46G,而【logs】是日志目录却占用了23M。

[root@hostname ~]# cd apache-tomcat-6.0.36-linux
[root@hostname apache-tomcat-6.0.36-linux]# ls
backup bin conf fare lib LICENSE logs NOTICE RELEASE-NOTES RUNNING.txt temp webapps work
[root@hostname apache-tomcat-6.0.36-linux]# du -sh *
92K   backup
882M  bin
108K  conf
46G   fare
6.8M  lib
40K   LICENSE
23M   logs
4.0K  NOTICE
12K   RELEASE-NOTES
16K   RUNNING.txt
7.9M  temp
188M  webapps
7.1M  work

第七步:继续一探究竟【fare】目录里面到底存放的是什么类型的目录或者文件。如下看到有很多类似日志文件,如common.log和pricing.log。通过和开发人员沟通之后,确定确实日志文件。

[root@hostname apache-tomcat-6.0.36-linux]# cd fare
[root@hostname fare]# ls
common.log       common.log.2017-09-21 common.log.2017-10-03   pricing.log.2017-09-10 pricing.log.2017-09-22 pricing.log.2017-10-04
common.log.2017-09-10 common.log.2017-09-22 common.log.2017-10-04   pricing.log.2017-09-11 pricing.log.2017-09-23 pricing.log.2017-10-05
common.log.2017-09-11 common.log.2017-09-23 common.log.2017-10-05   pricing.log.2017-09-12 pricing.log.2017-09-24 pricing.log.2017-10-06
common.log.2017-09-12 common.log.2017-09-24 common.log.2017-10-06   pricing.log.2017-09-13 pricing.log.2017-09-25 pricing.log.2017-10-07
common.log.2017-09-13 common.log.2017-09-25 common.log.2017-10-07   pricing.log.2017-09-14 pricing.log.2017-09-26 pricing.log.2017-10-08
common.log.2017-09-14 common.log.2017-09-26 common.log.2017-10-08   pricing.log.2017-09-15 pricing.log.2017-09-27 pricing.log.2017-10-09
common.log.2017-09-15 common.log.2017-09-27 common.log.2017-10-09   pricing.log.2017-09-16 pricing.log.2017-09-28 spring.log
common.log.2017-09-16 common.log.2017-09-28 common.zip        pricing.log.2017-09-17 pricing.log.2017-09-29 struts2.log
common.log.2017-09-17 common.log.2017-09-29 framework.log       pricing.log.2017-09-18 pricing.log.2017-09-30 xwork2.log
common.log.2017-09-18 common.log.2017-09-30 hibernate.log       pricing.log.2017-09-19 pricing.log.2017-10-01
common.log.2017-09-19 common.log.2017-10-01 hibernate.log.2017-01-03 pricing.log.2017-09-20 pricing.log.2017-10-02
common.log.2017-09-20 common.log.2017-10-02 pricing.log        pricing.log.2017-09-21 pricing.log.2017-10-03

第八步:继续查看哪个目录或者文件占用的空间最大,发现都是common.log和pricing.log相关的文件占用的空间最大,都是700M以上。至此,已经查明占用根目录”/”空间最多的原因是tomcat的日志文件太多,而且每一个日志文件都很大。

[root@hostname fare]# du -sh *|sort -h
0    framework.log
0    hibernate.log.2017-01-03
0    spring.log
0    struts2.log
0    xwork2.log
4.0K  hibernate.log
17M   common.zip
215M  pricing.log
216M  common.log
667M  pricing.log.2017-10-08
668M  common.log.2017-10-08
674M  common.log.2017-10-05
674M  pricing.log.2017-10-05
678M  common.log.2017-10-07
678M  pricing.log.2017-10-07
679M  common.log.2017-10-06
679M  pricing.log.2017-10-06
683M  common.log.2017-10-04
683M  pricing.log.2017-10-04
690M  pricing.log.2017-09-10
691M  common.log.2017-09-10
711M  common.log.2017-09-12
711M  pricing.log.2017-09-12
719M  pricing.log.2017-09-11
720M  common.log.2017-09-11
737M  common.log.2017-09-30
737M  pricing.log.2017-09-28
737M  pricing.log.2017-09-30
738M  common.log.2017-09-28
742M  common.log.2017-09-29
742M  pricing.log.2017-09-29
744M  pricing.log.2017-10-09
745M  common.log.2017-10-09
751M  common.log.2017-10-01
751M  pricing.log.2017-10-01
754M  common.log.2017-09-13
754M  pricing.log.2017-09-13
760M  common.log.2017-10-03
760M  pricing.log.2017-10-03
783M  pricing.log.2017-10-02
784M  common.log.2017-10-02
791M  pricing.log.2017-09-18
792M  common.log.2017-09-18
797M  common.log.2017-09-27
797M  pricing.log.2017-09-27
804M  common.log.2017-09-17
804M  common.log.2017-09-19
804M  pricing.log.2017-09-17
804M  pricing.log.2017-09-19
808M  common.log.2017-09-26
808M  pricing.log.2017-09-26
815M  pricing.log.2017-09-24
816M  common.log.2017-09-24
821M  common.log.2017-09-14
821M  pricing.log.2017-09-14
821M  pricing.log.2017-09-23
822M  common.log.2017-09-23
826M  common.log.2017-09-25
826M  pricing.log.2017-09-25
827M  common.log.2017-09-16
827M  pricing.log.2017-09-15
827M  pricing.log.2017-09-16
828M  common.log.2017-09-15
831M  common.log.2017-09-22
831M  pricing.log.2017-09-22
851M  common.log.2017-09-21
851M  pricing.log.2017-09-21
860M  common.log.2017-09-20
860M  pricing.log.2017-09-20

第九步:从文件的命令规律,可以看出日志文件日期保留一个月,检查root用户是否有定时删除日志文件计划。如下命令查看所示,确实有每天凌晨03:15进行日志文件删除的计划。但是由于日志文件太多和根目录空间大小原因,导致根目录空间使用比例过高。在有部署自动监控工具,如zabbix等,会自动发送告警。


[root@hostname ~]# crontab -l
15 3 * * * /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 | xargs rm -f
find /root/apache-tomcat-6.0.36-linux/bin/fare/ -name "pricing.log.2*" -mtime +30 | xargs rm -f

总结:

从运维的角度,不建议tomcat等应用程序部署在和Linux操作系统相关的文件系统中,尤其是直接部署在根目录下。一般都建议使用独立的文件系统来部署应用程序,无论从IO性能监控,文件系统空间使用监控都是有利的。

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Linux下Oracle删除用户和表空间的方法

    本文实例讲述了Linux下Oracle删除用户和表空间的方法.分享给大家供大家参考,具体如下: 1.删除某个用户 SQL> conn /as sysdba Connected. SQL> drop user userName cascade; 用户已删除 如果用户无法删除,并报错: ERROR at line 1: ORA-01940: cannot drop a user that is currently connected 通过查看用户的进行,并kill用户进程,然后删除用户. SQL&

  • Linux下如何调整根目录的空间大小

    一.目的 在使用CentOS6.3版本Linux系统的时候,发现根目录(/)的空间不是很充足,而其他目录空间有很大的空闲,所以本文主要是针对现在已有的空间进行调整.首先,先来查看一下系统的空间分配情况: [root@CentOS-78 /]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_centos-lv_root 50G 14G 34G 30% / tmpfs 1.9G 0 1.9G 0% /dev/shm /

  • 详解linux根目录空间不足解决方案

    1. 前言 之前新建了个ubuntu虚拟机来构建golang开发环境以及用来运行Docker,跟虚拟机分配了20G的空间并挂载到了根目录,但是后来由于用到的镜像越来越多,20G的空间已经远远不能用,所以不得不为系统扩展空间. 2. 本文分析内容安排 虚拟机空间扩展 新建分区 挂载分区到临时目录 拷贝文件 挂载到/var目录并写入fstab 3. 虚拟机空间扩展 打开vmvare,选择要添加磁盘空间的虚拟机,右击,然后在出现的菜单中点Setting,出来如下图所示的页面 选择HardDisk,点击

  • Linux 发邮件磁盘空间监控(python)

    核心代码: #!/usr/bin/python # -*- coding: UTF-8 -*- import smtplib import os import commands,time from email.mime.text import MIMEText #from email import MIMEText disk_free=os.popen('df -lh') list_disk=disk_free.read() mailto_list=["2880329185@qq.com&quo

  • 关于Linux服务器磁盘空间占满问题的解决方法

    下面我们一起来看一篇关于Linux服务器磁盘占满问题解决(/dev/sda3 满了),希望碰到此类问题的人能带来帮助. 今天下班某电商技术部leader发现个问题,说他们服务器硬盘满了.把日志文件都删掉了,可硬盘空间依旧满.于是df -h查看了下各个挂载点的状况(如下图). /dev/sda3占用了100%,那么我们du -s -h ./*看下目录的占用情况(如下图). 在工作中,我们也许会遇到这样的问题,发现某个磁盘空间快满了,于是,找到一些无用的大文件将其删除后,发现磁盘空间还是没有释放掉,

  • 在Linux系统上同时监控多个Oracle数据库表空间的方法

    一,设计背景   由于所在公司ORACLE数据库较多,传统人工监控表空间的方式较耗时,且无法记录历史表空间数据,无法判断每日表空间增长量,在没有gridcontrol/cloudcontrol软件的情况下,笔者设计如下表空间监控方案,大家也可以根据自己的实际情况对下面的方案进行修改. 二,设计思路 通过dblink将来查询到的表空间数据集中汇总到一张表里通过crontab跑定时任务从各台服务器获取表空间使用情况信息. 三,具体实施步骤   1.所在oracle数据库ip地址信息(下面为举例说明具

  • Linux中/var/spool/postfix/maildrop占空间很大的原因解析

    发现问题 最近在工作发现了一个错误,MySQL 报错 Exception Message:SQLSTATE[08004][1040]Too many connections,经查这次错误是硬盘空间满了导致的,于是找一些可以删除的文件腾出一些空间. 空间占用大的原因 发现 /var/spool/postfix/maildrop 这个目录占用了 6G 多的空间,网上找到一样的问题,原因是: 由于 Linux 在执行 cron 时,会将 cron 执行脚本中的 output 和 warning 信息,

  • linux 查看磁盘空间大小命令

    Ubuntu 查看文件以及磁盘空间大小管理 (1)查看文件大小 查看当前文件夹下所有文件大小(包括子文件夹) du -sh # du -h 15M ./package 16K ./.fontconfig 4.0K ./.cache 5.1M ./.rpmdb 20M . 查看指定文件夹下所有文件大小(包括子文件夹) # du -h ftp 3.8G ftp/sanya/doc 3.8G ftp/sanya 4.0K ftp/testftp/doc 1.4M ftp/testftp 875M ft

  • linux下使用 du查看某个文件或目录占用磁盘空间的大小方法

    du -ah --max-depth=1 这个是我想要的结果 a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度. du命令用来查看目录或文件所占用磁盘空间的大小.常用选项组合为:du -sh 一.du的功能:`du` reports the amount of disk space used by the specified files and for each subdirectory (of directory arguments)

  • Linux下查看CPU型号,内存大小,硬盘空间的命令(详解)

    1 查看CPU 1.1 查看CPU个数 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:删除重复行;wc –l命令:统计行数** 1.2 查看CPU核数 # cat /proc/cpuinfo | grep "cpu cores" | uniq cpu cores : 4 1.3 查看CPU型号 # cat /proc/cpuinfo | grep 'model name' |un

随机推荐