Linux Shell之监测磁盘空间

Linux Shell之监测磁盘空间

  系统管理员的另一个重要任务就是监测系统磁盘的使用情况。不管运行的是简单Linux台式机还是大型的Linux服务器,我们都要知道还有多少空间可以留给应用程序。事实上,就算你不是系统管理员,开发人员也好,个人用户也好,你也得知道这些。

一、挂载存储媒体

  Linux文件系统将所有的磁盘都并入一个虚拟目录下。在使用新的存储媒体之前,需要把它放到虚拟目录下。这项工作成为挂载(mounting)。

  在今天的图形化桌面环境里,大多数Linux发行版都能自动挂载特定类型的可移动存储媒体。可移动存储媒体指的是可从PC上轻易移除的媒体,比如CD-ROM、软盘和U盘。

  如果用的发行版不支持自动挂载和卸载可移动存储媒体,就必须手动完成。下面将介绍一些可以帮你管理可移动存储设备的Linux命令行命令。

  1、mount命令

 1 [email protected]:~$ mount
 2 sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
 3 proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
 4 udev on /dev type devtmpfs (rw,nosuid,relatime,size=1978072k,nr_inodes=494518,mode=755)
 5 devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
 6 tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=401568k,mode=755)
 7 /dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
 8 securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
 9 tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
10 tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
11 tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
12 cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
13 pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
14 cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
15 cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
16 cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
17 cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
18 cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
19 cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
20 cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
21 cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
22 cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
23 cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
24 cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
25 systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=22,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=21940)
26 mqueue on /dev/mqueue type mqueue (rw,relatime)
27 debugfs on /sys/kernel/debug type debugfs (rw,relatime)
28 hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
29 fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
30 configfs on /sys/kernel/config type configfs (rw,relatime)
31 vmware-vmblock on /run/vmblock-fuse type fuse.vmware-vmblock (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other)
32 vmhgfs-fuse on /mnt/hgfs type fuse.vmhgfs-fuse (rw,nosuid,nodev,relatime,user_id=0,group_id=0,allow_other)
33 tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=401568k,mode=700,uid=1000,gid=1000)
34 gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
35 [email protected]:~$ 

  mount命令提供如下四部分信息:

  •   媒体的设备文件名
  •   媒体挂载到虚拟目录的挂载点
  •   文件系统类型
  •   已挂载媒体的访问状态

  要手动在虚拟目录中挂载设备,需要以root用户身份登录,或是以root用户身份运行sudo命令。下面是手动挂载媒体设备的基本命令:

  mount -t type device directory

  type参数指定了磁盘被格式化的文件系统类型。Linux可以识别非常多的文件系统类型。如果是和Windows PC公用这些存储设备,通常得使用下列文件系统类型。

  •   vfat:Windows长文件系统。
  •   ntfs:Windows NT、XP、Vista以及Windows 7中广泛使用的高级文件系统。
  •   iso9660:标准CD-ROM文件系统。

  大多数U盘和软盘会被格式化成vfat文件系统。而数据CD则必须使用iso9660文件系统类型。

  后面两个参数定义了该存储设备的设备文件的位置以及挂载点在虚拟目录中的位置。比如说,手动将U盘/dev/sdb1挂载到/media/disk,可用下面的命令:

  mount -t vfat /dev/sdb1 /media/disk

  媒体设备挂载到了虚拟目录后,root用户就有了对该设备的所有访问权限,而其他用户的访问则会被限制。你可以通过目录权限(将在第7章中介绍)指定用户对设备的访问权限。

  如果要用到mount命令的一些高级功能,表4-5中列出了可用的参数。

参数 描述
-a 挂载/etc/fstab文件中指定的所有文件系统
-f 使mount命令模拟挂载设备,但并不真的挂载
-F 和-a参数一起使用时,会同时挂载所有文件系统
-v 详细模式,将会说明挂载设备的每一步
-I 不启用任何/sbin/mount.filesystem下的文件系统帮助文件
-l 给ext2、ext3或XFS文件系统自动添加文件系统标签
-n 挂载设备,但不注册到/etc/mtab已挂载设备文件中
-p num 进行加密挂载时,从文件描述符num中获得密码短语
-s 忽略该文件系统不支持的挂载选项
-r 将设备挂载为只读的
-w 将设备挂载为可读写的(默认参数)
-L label 将设备按指定的label挂载
-U uuid 将设备按指定的uuid挂载
-O 和-a参数一起使用,限制命令只作用到特定的一组文件系统上
-o 给文件系统添加特定的选项

-o参数允许在挂载文件系统时添加一些以逗号分隔的额外选项。以下为常用的选项

  •   ro:以只读形式挂载。
  •   rw:以读写形式挂载。
  •   user:允许普通用户挂载文件系统。
  •   check=none:挂载文件系统时不进行完整性校验。
  •   loop:挂载一个文件。

  2、umount命令

  从Linux系统上移除一个可移动设备时,不能直接从系统上移除,而应该先卸载。

  Linux上不能直接弹出已挂载的CD。如果你在从光驱中移除CD时遇到麻烦,通常是因为该CD还挂载在虚拟目录里。先卸载它,然后再去尝试弹出。

  umount [directory | device ]

umount命令支持通过设备文件或者是挂载点来指定要卸载的设备。如果有任何程序正在使用设备上的文件,系统就不会允许你卸载它:

  如果在卸载设备时,系统提示设备繁忙,无法卸载设备,通常是有进程还在访问该设备或使用该设备上的文件。这时可用lsof命令获得使用它的进程信息,然后在应用中停止使用该设备或停止该进程。lsof命令的用法很简单:lsof /path/to/device/node,或者lsof /path/to/mount/point。

二、使用df命令

  有时我们需要知道在某个设备上还有多少磁盘空间。df命令可以让你很方便地查看所有已挂载磁盘的使用情况。

 1 [email protected]:~$ df
 2 Filesystem     1K-blocks    Used Available Use% Mounted on
 3 udev             1978072       0   1978072   0% /dev
 4 tmpfs             401568    6312    395256   2% /run
 5 /dev/sda1       60809268 5392228  52305004  10% /
 6 tmpfs            2007832   33480   1974352   2% /dev/shm
 7 tmpfs               5120       4      5116   1% /run/lock
 8 tmpfs            2007832       0   2007832   0% /sys/fs/cgroup
 9 vmhgfs-fuse    105417592  163228 105254364   1% /mnt/hgfs
10 tmpfs             401568      60    401508   1% /run/user/1000
11 [email protected]:~$ 

  df命令会显示每个有数据的已挂载文件系统。如你在前例中看到的,有些已挂载设备仅限系统内部使用。命令输出如下:

  •   设备的设备文件位置;
  •   能容纳多少个1024字节大小的块;
  •   已用了多少个1024字节大小的块;
  •   还有多少个1024字节大小的块可用;
  •   已用空间所占的比例;
  •   设备挂载到了哪个挂载点上。

  df命令有一些命令行参数可用,但基本上不会用到。一个常用的参数是-h。它会把输出中的磁盘空间按照用户易读的形式显示,通常用M来替代兆字节,用G替代吉字节。

 1 [email protected]:~$ df -h
 2 Filesystem      Size  Used Avail Use% Mounted on
 3 udev            1.9G     0  1.9G   0% /dev
 4 tmpfs           393M  6.2M  386M   2% /run
 5 /dev/sda1        58G  5.2G   50G  10% /
 6 tmpfs           2.0G   33M  1.9G   2% /dev/shm
 7 tmpfs           5.0M  4.0K  5.0M   1% /run/lock
 8 tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
 9 vmhgfs-fuse     101G  160M  101G   1% /mnt/hgfs
10 tmpfs           393M   60K  393M   1% /run/user/1000
11 [email protected]:~$ 

  说明  Linux系统后台一直有进程来处理文件或使用文件。df命令的输出值显示的是Linux系统认为的当前值。有可能系统上有运行的进程已经创建或删除了某个文件,但尚未释放文件。这个值是不会算进闲置空间的。

三、使用du命令

  du命令可以显示某个特定目录(默认情况下是当前目录)的磁盘使用情况。这一方法可用来快速判断系统上某个目录下是不是有超大文件。默认情况下,du命令会显示当前目录下所有的文件、目录和子目录的磁盘使用情况,它会以磁盘块为单位来表明每个文件或目录占用了多大存储空间。对标准大小的目录来说,这个输出会是一个比较长的列表。下面是du命令的部分输出:

 1 [email protected]:~$ du
 2 4    ./xiaoyu/my_dir
 3 12    ./xiaoyu
 4 4    ./Pictures
 5 4    ./Public
 6 4    ./Documents
 7 352    ./vmware-tools-distrib/doc
 8 64    ./vmware-tools-distrib/installer
 9 180    ./vmware-tools-distrib/vgauth/schemas
10 184    ./vmware-tools-distrib/vgauth
11 7768    ./vmware-tools-distrib/caf/usr/lib/vmware-caf/pme/lib
12 496    ./vmware-tools-distrib/caf/usr/lib/vmware-caf/pme/bin
13 8268    ./vmware-tools-distrib/caf/usr/lib/vmware-caf/pme
14 8272    ./vmware-tools-distrib/caf/usr/lib/vmware-caf
15 8276    ./vmware-tools-distrib/caf/usr/lib
16 8280    ./vmware-tools-distrib/caf/usr
17 72    ./vmware-tools-distrib/caf/etc/vmware-caf/pme/config
18 68    ./vmware-tools-distrib/caf/etc/vmware-caf/pme/scripts
19 92    ./vmware-tools-distrib/caf/etc/vmware-caf/pme/install
20 236    ./vmware-tools-distrib/caf/etc/vmware-caf/pme
21 240    ./vmware-tools-distrib/caf/etc/vmware-caf

  每行输出左边的数值是每个文件或目录占用的磁盘块数。注意,这个列表是从目录层级的最底部开始,然后按文件、子目录、目录逐级向上。

  这么用du命令(不加参数,用默认参数)作用并不大。我们更想知道每个文件和目录占用了多大的磁盘空间,但如果还得逐页查找的话就没什么意义了。

  下面是能让du命令用起来更方便的几个命令行参数。

  •   -c:显示所有已列出文件总的大小。
  •   -h:按用户易读的格式输出大小,即用K替代千字节,用M替代兆字节,用G替代吉字节。
  •   -s:显示每个输出参数的总计。

原文地址:https://www.cnblogs.com/Reverse-xiaoyu/p/12071003.html

时间: 2024-10-28 06:29:54

Linux Shell之监测磁盘空间的相关文章

VMware 虚拟机(linux)增加根目录磁盘空间

今天查看学校的监控报修系统,不能访问了!!!系统运行很慢,用top命令查看发现内存使用率90%,用"df -h "查看"/"目录使用率已达到80%,导致系统运行很慢.我用以下方法扩大根目录磁盘空间.一.关闭你的虚拟机系统,找到如下内容:选择"Edit Virtual mache settings" 点击"Expand" 扩大虚拟机的空间为"40G"(根据个人需要填写空间大小).但是linux下面并不可见.二

【Azure】 Linux VM扩大操作系统磁盘空间

Azure Linux VM扩大操作系统磁盘空间 目前Azure 针对Linux VM提供了增加操作系统磁盘空间的新功能,目前支持的虚拟机主要包括DS, DSV2和FS系列虚拟机.这样有助于帮助客户应用日志保持在SDA文件增加磁盘空间. 1. 创建虚拟机的时候选择 2. 进入操作系统可以看到磁盘空间已经增加到对应大小. 3. 重新分区 [[email protected] ~]# fdisk /dev/sda The device presents a logical sector size t

自学Linux Shell4.2-监测磁盘空间mount umount df du

点击返回 自学Linux命令行与Shell脚本之路 4.2-监测磁盘空间mount umount  df du ls命令用于显示文件目录列表,和Windows系统下DOS命令dir类似.当执行ls命令时,默认显示的只有非隐藏文件的文件名.以文件名进行排序及文件名代表的颜色显示. 当不加参数时,默认列出当前目录的列表信息 ls命令用于显示文件目录列表,和Windows系统下DOS命令dir类似.当执行ls命令时,默认显示的只有非隐藏文件的文件名.以文件名进行排序及文件名代表的颜色显示. 当不加参数

VMware下LINUX的虚拟机增加磁盘空间

先关闭虚拟机电源,做如下设置:“ 虚拟机”--“虚拟机设置”--“磁盘”--“扩展” 可以随意添加你需要增到到的磁盘大小(如15Gb,表示磁盘总量,包含原来的磁盘容量); 再重启电源进入系统做如下步骤设置. 1. 启动虚拟机系统,用root登录(后续所有步骤都应以root用户身份登录操作),在 命令行用fdisk -l查看.由于这里是直接修改了原始空间大小,因此可以看到/dev/sda空间改变为16.1GB(原磁盘空间从10G增加到15G).如果是从VMware菜单里增加虚拟硬盘,则会多出一个/

Linux中如何扩展磁盘空间?

一.将未分配的磁盘空间划分为新分区    1.fdisk -l    2.fdisk /dev/sda    3. 输入命令:n 创建分区, 再输入命令:p 指定分区类型为主分区,出现提示符:输入分区号:3 ,接下来按两次Enter键完成多余磁盘空间的分配,此时,输入Command (m for help): p,可看到新分区/dev/hda3已经产生. 4.随后指定/dev/hda3的文件系统类型:Command (m for help): t 进行文件系统类型指定,Partition num

Linux编程之判断磁盘空间大小

一.引言 在开发过程中,经常会碰到这样的情况,在往指定目录下拷贝文件时,需要考虑到磁盘空间的大小是否足够来决定什么时候暂停自己的程序 二.用的函数 <sys/statfs.h> int statfs(const char *path, struct statfs *buf); 参考:http://man7.org/linux/man-pages/man2/statfs.2.html 三.示例 // 磁盘空间类型 enum EMDiskSizeType { TOTAL_SIZE, // 全部空间

VMware 虚拟机(linux)增加根目录磁盘空间 转自

转自 http://wenku.baidu.com/link?url=WZDgESO0oXqYfhPYOWFalZsMglS0HKtLw7t6ICRs_sJ_sfPc85RpxsqKMwqSniis0QkpgCru5OoaxkhbGl4z-eHmeejjbX58LZhlgOLYuzG 今天查看学校的监控报修系统,不能访问了!!!系统运行很慢,用top命令查看发现内存使用率90%,用"df -h ”查看“/”目录使用率已达到80%,导致系统运行很慢.我用以下方法扩大根目录磁盘空间. 一.关闭你的虚

Linux 分配/home的磁盘空间给根目录

Linux版本: Linux 6.9 系统安装完成以后,根目录的磁盘空间只有50G,剩余的大部分空间会分配到/home目录下面.使用过程中很少使用到/home目录,所以我们来把/home目录的磁盘空间分配一些给根目录 查看磁盘分区使用情况:df -TH 卸载/home目录:umount /home 或者umount /dev/mapper/vg_rogear-lv_home 压缩卷home,把空间压缩到100G resize2fs -p /dev/mapper/vg_rogear-lv_home

Linux 命令 - df: 报告磁盘空间的使用情况

df 命令列出指定的文件名所在的文件系统上可用磁盘空间的数量. 如果没有指定文件名,则显示当前所有使用中的文件系统.默认情况下,磁盘空间以 1K 为一块显示,如果设置了环境变量 POSIXLY_CORRECT,则采用 512 字节为一块显示. 命令格式 df [OPTION]... [FILE]... 命令参数 -a, --all 显示所有文件系统磁盘空间的占用情况 -B, --block-size=SIZE 指定块的大小 --total 额外显示总体的磁盘空间的占用情况 -h, --human