统计磁盘上文件和inode的使用情况
查找磁盘使用率高于10%的分区
df -h | grep -v “Used”|sort -nr -k 5 -u|sed -e “s/%//g”| awk ‘$5>10 {print $1 “\t” $5}; $5<10 {exit};’
找出根目录中比较大的文件
排除挂载点/proc、/sys、/usr/*、/bin后,统计列出目录中大小排名前10名的目录
du -k -x --exclude="proc" --exclude="sys" --exclude="/usr/*" --exclude="/bin/*" -S / | sort -nr -k 1 | head
211964 /home/jiang
87356 /var/adm/backup/rpmdb
82084 /var/lib/rpm
32336 /lib/firmware
31304 /etc/gconf/gconf.xml.schemas
26364 /etc/gconf/schemas
20188 /boot
15388 /root/.mozilla/firefox/ge5ma490.default
14152 /sbin
13936 /lib64
排除挂载点/proc、/sys、/usr/*、/bin后,统计列出目录和文件中大小排名前10名的目录
du -k -x --exclude="proc" --exclude="sys" --exclude="/usr/*" --exclude="/bin/*" -S -a / | sort -nr -k 1 | head
211964 /home/jiang
120088 /home/jiang/kernel-source-3.0.101-63.1.src.rpm
91752 /home/jiang/kernel-source-3.0.101-108.87.1.x86_64.rpm
87356 /var/adm/backup/rpmdb
82084 /var/lib/rpm
64208 /var/lib/rpm/Packages
32336 /lib/firmware
31304 /etc/gconf/gconf.xml.schemas
26364 /etc/gconf/schemas
20188 /boot
du的参数:
-k 以1K为单位
-x 排除其他挂载点
–exclude 跳过一些不用搜索的目录,节约时间
-S 只统计每个目录中的文件大小,不包含子目录,这样如果某一个目录整体比较大,但是里面的每个文件都不大,也能被找到
-a 同时统计单个文件的大小
sort的参数:
-n 按数字比较大小
-r 反向排序(也就是从大到小排序)
-k 比较的关键字所在的列,我们比较第一列
-u 相同的行只输出第一行
找出已删除但是删除文件依然占用磁盘空间的文件和对应的进程
找到挂载点下,已删除但由于文件未关闭依旧占有磁盘空间的文件和对应的进程
lsof /mnt/lv1 | grep deleted
a.out 6636 root 3u REG 254,0 0 12 /mnt/lv1/aaaa (deleted)
其他命令:
# 找到目录及其子目录下的所有文件
ls -A -R -1 /mnt
#统计/mnt目录下所占用的inode个数
ls -A -R -1 /mnt | grep -v / | grep -v "^$" | wc -l
#另一种方式:统计一个目录下的文件数(inode占用数)
#1、先写一个脚本,内容如下:
total_inodes_of(){
total=0;
tmp_f=`mktemp tmp.XXXXXXXXXX`
find $1 -type d -fprint $tmp_f
while read -r line; do n_inode=`ls -1 $line | wc -l`; echo "$n_inode $line"; total=$(($total + $n_inode)); done < $tmp_f
rm $tmp_f
echo "$total in all"
}
#2、使用方法如下:
total_inodes_of /dev
203 /dev
2 /dev/vg1
8 /dev/snd
1 /dev/snd/by-path
6 /dev/disk
1 /dev/disk/by-label
4 /dev/disk/by-uuid
#du命令统计目录下inode使用量
–inode 参数 显示目录占用的inode数量, 而不是数据块的大小,新版本的du命令才支持
#示例1:
du --inode -S -s /dev
188 /dev
#示例2:
du --inode -S -s /usr/lib64/firefox /usr/lib64/
17 /usr/lib64/firefox
1853 /usr/lib64/
#示例3:
du --inode -S /dev
3 /dev/vg1
2 /dev/snd/by-path
8 /dev/snd
2 /dev/vfio
对比ls的-f 和-U 参数
ls 的参数
-A 不包含. 和 …
-R 递归子目录执行ls
-1 每行只输出一个文件
-f 不排序,可节约运行过程中的内存使用量,相当于-aU
-U 不排序,也不包含.和…
-s 显示文件大小
-f与-U参数对比:
ls -f -1 -s /bin | head
total 5184
0 .
0 ..
4 dnsdomainname
4 domainname
16 hostname
120 netstat
ls -U -1 -s /bin | head
total 5184
4 dnsdomainname
4 domainname
16 hostname
120 netstats
使用ls -f 和-U 参数的脚本输出对比:
使用ls -f参数的脚本
jiang@linux-d4xo:~> total_inodes_of(){
> total=0;
> tmp_f=`mktemp tmp.XXXXXXXXXX`
> find $1 -mount -type d -fprint $tmp_f
> while read -r line; do n_inode=`ls -f -1 $line | wc -l`; echo "$n_inode $line"; total=$(($total + $n_inode)); done < $tmp_f
> rm $tmp_f
> echo "$total in all"
> }
jiang@linux-d4xo:~> total_inodes_of /mnt
6 /mnt
2 /mnt/cdrom
2 /mnt/nfs-c-a
2 /mnt/nfs-c-b
2 /mnt/sdc1
14 in all
使用ls -U参数的脚本
jiang@linux-d4xo:~> total_inodes_of(){
> total=0;
> tmp_f=`mktemp tmp.XXXXXXXXXX`
> find $1 -type d -fprint $tmp_f
> while read -r line; do n_inode=`ls -U -1 $line | wc -l`; echo "$n_inode $line"; total=$(($total + $n_inode)); done < $tmp_f
> rm $tmp_f
> echo "$total in all"
> }
jiang@linux-d4xo:~> total_inodes_of /mnt
4 /mnt
0 /mnt/cdrom
0 /mnt/nfs-c-a
0 /mnt/nfs-c-b
0 /mnt/sdc1
4 in all
使用du --inode输出结果
jiang@linux-d4xo:~> du --inode /mnt
1 /mnt/cdrom
1 /mnt/nfs-c-a
1 /mnt/nfs-c-b
1 /mnt/sdc1
5 /mnt
使用find和wc统计结果:
jiang@linux-d4xo:~> total_inodes_of(){
> total=0;
> tmp_f=`mktemp tmp.XXXXXXXXXX`
> find $1 -type d -fprint $tmp_f
> while read -r line; do n_inode=`ls -1 $line | wc -l`; echo "$n_inode $line"; total=$(($total + $n_inode)); done < $tmp_f
> rm $tmp_f
> echo "$total in all"
> }
jiang@linux-d4xo:~> total_inodes_of /mnt
4 /mnt
0 /mnt/cdrom
0 /mnt/nfs-c-a
0 /mnt/nfs-c-b
0 /mnt/sdc1
4 in all
文章目录
关闭