Linux命令行和shell脚本大全

df 命令

有时你需要知道在某个设备上还有多少磁盘空间。df命令可以让你很方便地查看所有已挂载
磁盘的使用情况。
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 18251068 7703964 9605024 45% /
/dev/sda1 101086 18680 77187 20% /boot
tmpfs 119536 0 119536 0% /dev/shm
/dev/sdb1 127462 113892 13570 90% /media/disk
$
df命令会显示每个有数据的已挂载文件系统。如你在前例中看到的,有些已挂载设备仅限系
统内部使用。命令输出如下:
 设备的设备文件位置;
 能容纳多少个1024字节大小的块;
 已用了多少个1024字节大小的块;
 还有多少个1024字节大小的块可用;
 已用空间所占的比例;
 设备挂载到了哪个挂载点上。
df命令有一些命令行参数可用,但基本上不会用到。一个常用的参数是-h。它会把输出中
的磁盘空间按照用户易读的形式显示,通常用M来替代兆字节,用G替代吉字节。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdb2 18G 7.4G 9.2G 45% /
/dev/sda1 99M 19M 76M 20% /boot
tmpfs 117M 0 117M 0% /dev/shm
/dev/sdb1 125M 112M 14M 90% /media/disk
$

du 命令

通过df命令很容易发现哪个磁盘的存储空间快没了。系统管理员面临的下一个问题是,发生
这种情况时要怎么办。
另一个有用的命令是du命令。du命令可以显示某个特定目录(默认情况下是当前目录)的
磁盘使用情况。这一方法可用来快速判断系统上某个目录下是不是有超大文件。
默认情况下,du命令会显示当前目录下所有的文件、目录和子目录的磁盘使用情况,它会以
磁盘块为单位来表明每个文件或目录占用了多大存储空间。对标准大小的目录来说,这个输出会
是一个比较长的列表。下面是du命令的部分输出:
$ du
484 ./.gstreamer-0.10
8 ./Templates
8 ./Download
8 ./.ccache/7/0
24 ./.ccache/7
368 ./.ccache/a/d
384 ./.ccache/a
424 ./.ccache
8 ./Public
8 ./.gphpedit/plugins
32 ./.gphpedit
72 ./.gconfd
128 ./.nautilus/metafiles
384 ./.nautilus
72 ./.bittorrent/data/metainfo
20 ./.bittorrent/data/resume
144 ./.bittorrent/data
152 ./.bittorrent
8 ./Videos
8 ./Music
16 ./.config/gtk-2.0
40 ./.config
8 ./Documents
每行输出左边的数值是每个文件或目录占用的磁盘块数。注意,这个列表是从目录层级的最
底部开始,然后按文件、子目录、目录逐级向上。
这么用du命令(不加参数,用默认参数)作用并不大。我们更想知道每个文件和目录占用了
多大的磁盘空间,但如果还得逐页查找的话就没什么意义了。
下面是能让du命令用起来更方便的几个命令行参数。
 -c:显示所有已列出文件总的大小。
 -h:按用户易读的格式输出大小,即用K替代千字节,用M替代兆字节,用G替代吉字
节。
 -s:显示每个输出参数的总计。
选项-a递归地输出指定目录或多个目录中所有文件的统计结果
du命令也可以用于目录
 打印以字节(默认输出)为单位的文件大小:
$ du -b FILE(s)
 打印以KB为单位的文件大小:
$ du -k FILE(s)
 打印以MB为单位的文件大小:
$ du -m FILE(s)
 打印以指定块为单位的文件大小:
$ du -B BLOCK_SIZE FILE(s)

排序数据

处理大量数据时的一个常用命令是sort命令。顾名思义,sort命令是对数据进行排序的。
默认情况下,sort命令按照会话指定的默认语言的排序规则对文本文件中的数据行排序
$ cat file1
one
two
three
four
five
$ sort file1
five
four
one
three
two
$
这相当简单。但事情并非总像看起来那样容易。看下面的例子。
$ cat file2
1
2
100
45
3
10
145
75
$ sort file2
1
10
100
145
2
3
45
75
$
如果你本期望这些数字能按值排序,就要失望了。默认情况下,sort命令会把数字当做字
符来执行标准的字符排序,产生的输出可能根本就不是你要的。解决这个问题可用-n参数,它会
告诉sort命令把数字识别成数字而不是字符,并且按值排序。
$ sort -n file2
1
2
3
10
45
75
100
145
$

将文件按小到大排序

du -b | sort -n

找出指定目录中最大的10个文件

du和sort命令能够找出需要被删除或移走的大文件:
$ du -ak SOURCE_DIR | sort -nrk 1 | head
选项-a可以显示出SOURCE_DIR中所有文件和目录的大小。输出的第一列就是文件大小。选项-k
表示以KB为单位。第二列包含文件或目录的名称。
sort的选项-n指明按数值排序,选项-l和-r指明对第一列按逆序排序。head用来从输出中
提取前10行:
$ du -ak /home/slynux | sort -nrk 1 | head -n 4
50220 /home/slynux
43296 /home/slynux/.mozilla
43284 /home/slynux/.mozilla/firefox
43276 /home/slynux/.mozilla/firefox/8c22khxc.default
这个单行脚本的缺点之一在于它的结果中还包含了目录。我们可以使用find命令改进脚本,使
其只输出最大的文件:
$ find . -type f -exec du -k {} ; | sort -nrk 1 | head
利用find替du将文件过滤出来,这样就无需使用du遍历文件系统了。
注意,du命令会输出文件的字节数。这个数字未必和文件所占的磁盘空间一样。磁盘空间是
以块为单位分配的,因此就算是1字节的文件也会耗费一个磁盘块,块大小通常在512到4096字节
之间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值