Linux Shell之监测磁盘空间

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

一、挂载存储媒体

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

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

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

  1、mount命令

 xiaoyu@ubuntu:~$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=1978072k,nr_inodes=,mode=)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=,mode=,ptmxmode=)
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=401568k,mode=)
/dev/sda1 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/rdma type cgroup (rw,nosuid,nodev,noexec,relatime,rdma)
systemd- on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=,pgrp=,timeout=,minproto=,maxproto=,direct,pipe_ino=)
mqueue on /dev/mqueue type mqueue (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
configfs on /sys/kernel/config type configfs (rw,relatime)
vmware-vmblock on /run/vmblock-fuse type fuse.vmware-vmblock (rw,relatime,user_id=,group_id=,default_permissions,allow_other)
vmhgfs-fuse on /mnt/hgfs type fuse.vmhgfs-fuse (rw,nosuid,nodev,relatime,user_id=,group_id=,allow_other)
tmpfs on /run/user/ type tmpfs (rw,nosuid,nodev,relatime,size=401568k,mode=,uid=,gid=)
gvfsd-fuse on /run/user//gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=,group_id=)
xiaoyu@ubuntu:~$

  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命令可以让你很方便地查看所有已挂载磁盘的使用情况。
 xiaoyu@ubuntu:~$ df
Filesystem 1K-blocks Used Available Use% Mounted on
udev % /dev
tmpfs % /run
/dev/sda1 % /
tmpfs % /dev/shm
tmpfs % /run/lock
tmpfs % /sys/fs/cgroup
vmhgfs-fuse % /mnt/hgfs
tmpfs % /run/user/
xiaoyu@ubuntu:~$
  df命令会显示每个有数据的已挂载文件系统。如你在前例中看到的,有些已挂载设备仅限系统内部使用。命令输出如下:
  •   设备的设备文件位置;
  •   能容纳多少个1024字节大小的块;
  •   已用了多少个1024字节大小的块;
  •   还有多少个1024字节大小的块可用;
  •   已用空间所占的比例;
  •   设备挂载到了哪个挂载点上。
  df命令有一些命令行参数可用,但基本上不会用到。一个常用的参数是-h。它会把输出中的磁盘空间按照用户易读的形式显示,通常用M来替代兆字节,用G替代吉字节。
 xiaoyu@ubuntu:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev .9G .9G % /dev
tmpfs 393M 6.2M 386M % /run
/dev/sda1 58G .2G 50G % /
tmpfs .0G 33M .9G % /dev/shm
tmpfs 5.0M .0K 5.0M % /run/lock
tmpfs .0G .0G % /sys/fs/cgroup
vmhgfs-fuse 101G 160M 101G % /mnt/hgfs
tmpfs 393M 60K 393M % /run/user/
xiaoyu@ubuntu:~$
  说明  Linux系统后台一直有进程来处理文件或使用文件。df命令的输出值显示的是Linux系统认为的当前值。有可能系统上有运行的进程已经创建或删除了某个文件,但尚未释放文件。这个值是不会算进闲置空间的。

三、使用du命令

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

 xiaoyu@ubuntu:~$ du
./xiaoyu/my_dir
./xiaoyu
./Pictures
./Public
./Documents
./vmware-tools-distrib/doc
./vmware-tools-distrib/installer
./vmware-tools-distrib/vgauth/schemas
./vmware-tools-distrib/vgauth
./vmware-tools-distrib/caf/usr/lib/vmware-caf/pme/lib
./vmware-tools-distrib/caf/usr/lib/vmware-caf/pme/bin
./vmware-tools-distrib/caf/usr/lib/vmware-caf/pme
./vmware-tools-distrib/caf/usr/lib/vmware-caf
./vmware-tools-distrib/caf/usr/lib
./vmware-tools-distrib/caf/usr
./vmware-tools-distrib/caf/etc/vmware-caf/pme/config
./vmware-tools-distrib/caf/etc/vmware-caf/pme/scripts
./vmware-tools-distrib/caf/etc/vmware-caf/pme/install
./vmware-tools-distrib/caf/etc/vmware-caf/pme
./vmware-tools-distrib/caf/etc/vmware-caf
  每行输出左边的数值是每个文件或目录占用的磁盘块数。注意,这个列表是从目录层级的最底部开始,然后按文件、子目录、目录逐级向上。
  这么用du命令(不加参数,用默认参数)作用并不大。我们更想知道每个文件和目录占用了多大的磁盘空间,但如果还得逐页查找的话就没什么意义了。
  下面是能让du命令用起来更方便的几个命令行参数。
  •   -c:显示所有已列出文件总的大小。
  •   -h:按用户易读的格式输出大小,即用K替代千字节,用M替代兆字节,用G替代吉字节。
  •   -s:显示每个输出参数的总计。

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

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

    点击返回 自学Linux命令行与Shell脚本之路 4.2-监测磁盘空间mount umount  df du 1. 挂载存储媒体mount  移除存储媒体umount ls命令用于显示文件目录列表, ...

  2. 【转载】VMware下LINUX的虚拟机增加磁盘空间

    转载自:http://space.itpub.net/24435147/viewspace-694200 VMware6.7安装目录下有一个命令行工具vmware-vdiskmanager.exe 程 ...

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

    先关闭虚拟机电源,做如下设置:“ 虚拟机”--“虚拟机设置”--“磁盘”--“扩展” 可以随意添加你需要增到到的磁盘大小(如15Gb,表示磁盘总量,包含原来的磁盘容量); 再重启电源进入系统做如下步骤 ...

  4. linux 日常命令(磁盘空间)

    df –hl 在windows下可以很方便的查看磁盘空间的.但是到了Linux查看磁盘空间,你可能就有点摸不着头脑了,呵呵.不要急,我这就要给你解决这个问题. Df命令是Linux查看磁盘空间系统以磁 ...

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

    转自 http://wenku.baidu.com/link?url=WZDgESO0oXqYfhPYOWFalZsMglS0HKtLw7t6ICRs_sJ_sfPc85RpxsqKMwqSniis0 ...

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

    今天查看学校的监控报修系统,不能访问了!!!系统运行很慢,用top命令查看发现内存使用率90%,用"df -h ”查看“/”目录使用率已达到80%,导致系统运行很慢.我用以下方法扩大根目录磁 ...

  7. Linux系统扩容根目录磁盘空间的操作方法

    问题描述 系统的服务无法正常运行,查看磁盘空间,发现根目录已经满了 解决过程 1.添加磁盘空间 2.使用fdisk -l命令查看磁盘信息 3.新建磁盘分区 4.使用fdisk /dev/sda3, 创 ...

  8. Linux查看文件以及磁盘空间大小管理(转)

    (1)查看文件大小  查看当前文件夹下所有文件大小(包括子文件夹)    du -sh   # du -h15M     ./package16K     ./.fontconfig4.0K    . ...

  9. Linux系统扩容根目录磁盘空间

    作者:非法小恋 一.使用背景 Linux根目录磁盘空间不够用了,当修改了虚拟机模版增加磁盘大小或者插入了一块新硬盘,但是发现系统里的大小还是没改变. 产生的原因是没有给磁盘格式化,没有增加分区. 二. ...

随机推荐

  1. SAP Business One对象清单

    中文描述 对象号 表名 主键 英文描述 总账科目 1 OACT AcctCode G/L Accounts 业务伙伴 2 OCRD CardCode Business Partner 银行代码 3 O ...

  2. Java 密码加盐

    只对密码进行md5加密很容易反推出来,另外两个用户的密码相同时,数据库保存相同的密码,知道一个用户的密码就知道另一个.解决方法是在用户的短密码后面加上一段长字符,再计算 md5,这样反推出原始密码就变 ...

  3. Java中往zip压缩包追加文件

    有个需求,从某个接口下载的一个zip压缩包,往里面添加一个说明文件.搜索了一下,没有找到往zip直接添加文件的方法,最终解决方法是先解压.再压缩. 具体过程如下: 1.一个zip文件的压缩和解压工具类 ...

  4. Git很麻烦?只要掌握这几个命令,轻松将代码提交远程仓库

    在上一章节,跟大家介绍了拉取代码的操作,简单暴力.这一章节要介绍的是如何将现有的项目,直接提交到仓库. 现在,如果大家有一个项目要提交到GitHub仓库,安装上一张的方法,需要先在GitHub上建一个 ...

  5. sqlserver日志处理不当而造成的隐患

    sqlserver日志处理不当而造成的隐患 事故背景:一大早还在路上,群里陆续有人反馈系统一直报错 “Unknown error 258”,后来查询日志发现错误日志 第一反应是不是数据库连接不够用了? ...

  6. [C]struct结构化数据的一些要点

    1.用typedef声明一个短语代替冗长的struct成员声明 int main(void) { typedef struct Hores Hores; struct Hores { int age; ...

  7. vue路由进阶

    一..全局路由前置守卫 1.首先看一下文档结构 Dashboard和Login是一级页面  home about mine是在Dashboard下的二级页面 2.router.js代码如下 impor ...

  8. IT兄弟连 HTML5教程 CSS3属性特效 3D变换3

    5  3D旋转 在三维变形中,我们可以让元素在任何轴旋转.为此,CSS3新增了三个旋转函数:rotateX().rotateY()和rotateZ().使用rotateX()函数允许一个元素围绕X轴旋 ...

  9. vc6.0 绿色版 下载地址

    最新版的vs2019已经完全不支持生成运行在xp下的应用程序 每次在xp下测试,都需要配置好vc6.0,但乱七八糟的太多了,给出地址,绿色版可用 http://www.downcc.com/soft/ ...

  10. Xshell/Xftp连接Linux速度非常慢(已解决)

    原因: 在使用shell连接虚拟机时连接等待时间太长,ssh的服务端在连接时会自动检测dns环境是否一致导致的,修改为不检测即可! 解决方案: 1.打开sshd服务的配置文件/etc/ssh/sshd ...