1.df

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

语法

  1. df [-ahikHTm] [目录或文件名]

选项

  1. -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;
  2. -k :以 KBytes 的容量显示各文件系统;
  3. -m :以 MBytes 的容量显示各文件系统;
  4. -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;
  5. -H :以 M=1000K 取代 M=1024K 的进位方式;
  6. -T :显示文件系统类型, 连同该 partition filesystem 名称 (例如 ext3) 也列出;
  7. -i :不用硬盘容量,而以 inode 的数量来显示

例子

# 将系统内所有的文件系统列出来!
--在 Linux 底下如果 df 没有加任何选项
--那么默认会将系统内所有的 (不含特殊内存内的文件系统与 swap) 都以 1 Kbytes 的容量来列出来!

df

文件系统                  1K-块    已用    可用 已用% 挂载点
/dev/mapper/centos-root 8374272 1062120 7312152   13% /
devtmpfs                 485780       0  485780    0% /dev
tmpfs                    497948       0  497948    0% /dev/shm
tmpfs                    497948    7860  490088    2% /run
tmpfs                    497948       0  497948    0% /sys/fs/cgroup
/dev/sdb1               1014680    2564  943356    1% /newdisk
/dev/sda1               1038336  135380  902956   14% /boot
tmpfs                     99592       0   99592    0% /run/user/0
# 将容量结果以易读的容量格式显示出来
df -h

文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root  8.0G  1.1G  7.0G   13% /
devtmpfs                 475M     0  475M    0% /dev
tmpfs                    487M     0  487M    0% /dev/shm
tmpfs                    487M  7.7M  479M    2% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/sdb1                991M  2.6M  922M    1% /newdisk
/dev/sda1               1014M  133M  882M   14% /boot
tmpfs                     98M     0   98M    0% /run/user/0
# 将系统内的所有特殊文件格式及名称都列出来
df -aT

文件系统                类型         1K-块    已用    可用 已用% 挂载点
rootfs                  -                -       -       -     - /
sysfs                   sysfs            0       0       0     - /sys
proc                    proc             0       0       0     - /proc
devtmpfs                devtmpfs    485780       0  485780    0% /dev
securityfs              securityfs       0       0       0     - /sys/kernel/security
tmpfs                   tmpfs       497948       0  497948    0% /dev/shm
devpts                  devpts           0       0       0     - /dev/pts
tmpfs                   tmpfs       497948    7860  490088    2% /run
tmpfs                   tmpfs       497948       0  497948    0% /sys/fs/cgroup
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/systemd
pstore                  pstore           0       0       0     - /sys/fs/pstore
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/devices
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/net_cls,net_prio
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/pids
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/memory
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/cpuset
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/cpu,cpuacct
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/blkio
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/hugetlb
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/perf_event
cgroup                  cgroup           0       0       0     - /sys/fs/cgroup/freezer
configfs                configfs         0       0       0     - /sys/kernel/config
/dev/mapper/centos-root xfs        8374272 1062120 7312152   13% /
selinuxfs               selinuxfs        0       0       0     - /sys/fs/selinux
systemd-1               autofs           0       0       0     - /proc/sys/fs/binfmt_misc
debugfs                 debugfs          0       0       0     - /sys/kernel/debug
mqueue                  mqueue           0       0       0     - /dev/mqueue
hugetlbfs               hugetlbfs        0       0       0     - /dev/hugepages
/dev/sdb1               ext4       1014680    2564  943356    1% /newdisk
/dev/sda1               xfs        1038336  135380  902956   14% /boot
tmpfs                   tmpfs        99592       0   99592    0% /run/user/0
# 将 /etc 底下的可用的磁盘容量以易读的容量格式显示
df -h /etc

文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root  8.0G  1.1G  7.0G   13% /

2.du

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。

与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。

语法

du [-ahskm] 文件或目录名称

选项

-a :显示所有目录或文件的大小
-h :以K,M,G为单位,提高信息可读性
-s :列出总量而已,而不列出每个各别的目录占用容量;
-S :不包括子目录下的总计,与 -s 有点差别。
-k :以1024 bytes为单位。列出容量显示;
-m :以1MB为单位。列出容量显示;
--max-depth=1 表示只深入到第1层目录,此处设置为0,即表示不深入到子目录。

例子

# 只列出当前目录下的所有文件夹容量(包括隐藏文件夹):
--直接输入 du 没有加任何选项时,则 du 会分析当前所在目录的文件与目录所占用的硬盘空间。

du

16./redis
8./www/.oracle_jre_usage  # 包括隐藏文件的目录
24./www
48.                        # 这个目录(.)所占用的总量
# 将文件的容量也列出来
du -a

4./redis/.bash_profile
4./redis/.bash_logout    
....中间省略....
4./kuangstudy.txt # 有文件的列表了
48.
# 检查根目录底下每个目录所占用的容量
--通配符 * 来代表每个目录。
du -sm /*

0/bin
146/boot
.....中间省略....
0/proc
.....中间省略....
1/tmp
3026/usr  # 系统初期最大就是他了啦!
513/var
2666/www
#流出opt目录,深度为1
du -h --max-depth=1 /opt

3. 查看所有设备及挂载情况

lsblk用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。

语法

lsblk

选项

-a, --all            显示所有设备。
-b, --bytes          以bytes方式显示设备大小。
-d, --nodeps         不显示 slaves 或 holders。
-D, --discard        print discard capabilities。
-e, --exclude <list> 排除设备 (default: RAM disks)。
-f, --fs             显示文件系统信息。
-h, --help           显示帮助信息。
-i, --ascii          use ascii characters only。
-m, --perms          显示权限信息。
-l, --list           使用列表格式显示。
-n, --noheadings     不显示标题。
-o, --output <list>  输出列。
-P, --pairs          使用key="value"格式显示。
-r, --raw            使用原始格式显示。
-t, --topology       显示拓扑结构信息。-a, --all            显示所有设备。
-b, --bytes          以bytes方式显示设备大小。
-d, --nodeps         不显示 slaves 或 holders。
-D, --discard        print discard capabilities。
-e, --exclude <list> 排除设备 (default: RAM disks)。
-f, --fs             显示文件系统信息。
-h, --help           显示帮助信息。
-i, --ascii          use ascii characters only。
-m, --perms          显示权限信息。
-l, --list           使用列表格式显示。
-n, --noheadings     不显示标题。
-o, --output <list>  输出列。
-P, --pairs          使用key="value"格式显示。
-r, --raw            使用原始格式显示。
-t, --topology       显示拓扑结构信息。

例子

1.lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   10G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0    9G  0 part
  ├─centos-root 253:0    0    8G  0 lvm  /
  └─centos-swap 253:1    0    1G  0 lvm  [SWAP]
sr0              11:0    1  4.3G  0 rom


NAME :这是块设备名。
MAJ:MIN :本栏显示主要和次要设备号。
RM :本栏显示设备是否可移动设备。注意,在本例中设备sdb和sr0的RM值等于1,这说明他们是可移动设备。
SIZE :本栏列出设备的容量大小信息。例如10G表明该设备大小为10G,而1K表明该设备大小为1KB。
RO :该项表明设备是否为只读。在本案例中,所有设备的RO值为0,表明他们不是只读的。
TYPE :本栏显示块设备是否是磁盘或磁盘上的一个分区。在本例中,sda和sdb是磁盘,而sr0是只读存储(rom)。
MOUNTPOINT :本栏指出设备挂载的挂载点。
2.lsblk -f

NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda
├─sda1          xfs                         248990cf-cffe-4b3f-ac4e-d2ee25459d01   /boot
└─sda2          LVM2_member                 Zl2Twp-gutn-oVHF-fCqn-YPRj-1vp4-KllWxh
  ├─centos-root xfs                         ef6483e7-9209-4f5d-9f53-5ed246ca47c4   /
  └─centos-swap swap                        d428d502-3119-4529-ab5a-f55588f1b98b   [SWAP]
sr0             iso9660     CentOS 7 x86_64 2018-11-25-23-54-16-00

4.分区

语法

fdisk [必要参数][选择参数]

选项

1.必要参数:

-l 列出素所有分区表
-u 与"-l"搭配使用,显示分区数目

2.选择参数:
-s<分区编号> 指定分区
-v 版本信息

3.选项
m :显示菜单和帮助信息
a :活动分区标记/引导分区
d :删除分区
l :显示分区类型
n :新建分区
p :显示分区信息
q :退出不保存
t :设置分区号
v :进行分区检查
w :保存修改
x :扩展应用,高级功能

查看设备。下面的sdb是之前在虚拟机手动添加的硬盘,目的是练习分区、格式化、挂载、永久挂载命令

lsblk

NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   10G  0 disk
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0    9G  0 part
  ├─centos-root 253:0    0    8G  0 lvm  /
  └─centos-swap 253:1    0    1G  0 lvm  [SWAP]
sdb               8:16   0    1G  0 disk
sr0              11:0    1  4.3G  0 rom

新建分区

1.命令行输入,弹出以下内容

[root@localhost ~]#fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x2f2536bd 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):

2.输入m,弹出以下内容

m
命令操作
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

3.选择n新建分区,弹出以下内容

n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended

4.选择p,弹出以下内容

p
#如果选择1增加1个分区,如果2就是增加2个分区
分区号 (1-4,默认 1):

5.选择1,弹出以下内容

起始 扇区 (2048-2097151,默认为 2048):

6.回车,弹出以下内容

Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):

7.回车,弹出以下内容

命令(输入 m 获取帮助):

8.输入w写入分区并退出,若不保存输入q

5.磁盘格式化

查看设备

lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda
├─sda1          xfs                         248990cf-cffe-4b3f-ac4e-d2ee25459d01   /boot
└─sda2          LVM2_member                 Zl2Twp-gutn-oVHF-fCqn-YPRj-1vp4-KllWxh
  ├─centos-root xfs                         ef6483e7-9209-4f5d-9f53-5ed246ca47c4   /
  └─centos-swap swap                        d428d502-3119-4529-ab5a-f55588f1b98b   [SWAP]
sdb
└─sdb1
sr0             iso9660     CentOS 7 x86_64 2018-11-25-23-54-16-00

语法

mkfs

选项

-t 文件系统格式:用于指定格式化的文件系统,如 ext3、ext4;

例子

#将sdb1格式化
mkfs -t  ext4 /dev/sdb1

再次查看设备,sdb1出现了UUID,说明这块分区已经格式化了

lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda
├─sda1          xfs                         248990cf-cffe-4b3f-ac4e-d2ee25459d01   /boot
└─sda2          LVM2_member                 Zl2Twp-gutn-oVHF-fCqn-YPRj-1vp4-KllWxh
  ├─centos-root xfs                         ef6483e7-9209-4f5d-9f53-5ed246ca47c4   /
  └─centos-swap swap                        d428d502-3119-4529-ab5a-f55588f1b98b   [SWAP]
sdb
└─sdb1          ext4                        be5c9b0e-57d3-4574-ba58-5431a14b3a63
sr0             iso9660     CentOS 7 x86_64 2018-11-25-23-54-16-00

6.磁盘挂载与卸除

挂载

指的就是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。

纠正一个误区,并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。

前面讲过,根目录下的 /dev/ 目录文件负责所有的硬件设备文件,事实上,当 U 盘插入 Linux 后,系统也确实会给 U 盘分配一个目录文件(比如 sdb1),就位于 /dev/ 目录下(/dev/sdb1),但无法通过 /dev/sdb1/ 直接访问 U 盘数据,访问此目录只会提供给你此设备的一些基本信息(比如容量)。

总之,Linux 系统使用任何硬件设备,都必须将设备文件与已有目录文件进行挂载。

注意:用命令行挂载重启后会失效

语法

mount

例子

1.根目录,新建newdisk。
--挂载的地方一定非要在根目录,也可以在root,也可以在home目录下
[root@localhost /]# mkdir newdisk

2.将sdb1挂载到newdisk
mount /dev/sdb1 /newdisk

查看设备。sdb1后面多了一个挂载点

lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda
├─sda1          xfs                         248990cf-cffe-4b3f-ac4e-d2ee25459d01   /boot
└─sda2          LVM2_member                 Zl2Twp-gutn-oVHF-fCqn-YPRj-1vp4-KllWxh
  ├─centos-root xfs                         ef6483e7-9209-4f5d-9f53-5ed246ca47c4   /
  └─centos-swap swap                        d428d502-3119-4529-ab5a-f55588f1b98b   [SWAP]
sdb
└─sdb1          ext4                        be5c9b0e-57d3-4574-ba58-5431a14b3a63   /newdisk
sr0             iso9660     CentOS 7 x86_64 2018-11-25-23-54-16-00

永久挂载(自动挂载)

通过修改/etc/fstab实现永久挂载,添加完成后执行mount -a即可生效

1.进入fstab

vi /etc/fstab

2.添加挂载信息
方法一:通过名字直接写
/dev/sdb1                                       /newdisk                ext4    defaults        0 0

方法二通过UUID
UUID=be5c9b0e-57d3-4574-ba58-5431a14b3a63        /newdisk                ext4    defaults        0 0

磁盘管理 - 图1

重启后,查看设备挂载并没有消失

NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda
├─sda1          xfs                         248990cf-cffe-4b3f-ac4e-d2ee25459d01   /boot
└─sda2          LVM2_member                 Zl2Twp-gutn-oVHF-fCqn-YPRj-1vp4-KllWxh
  ├─centos-root xfs                         ef6483e7-9209-4f5d-9f53-5ed246ca47c4   /
  └─centos-swap swap                        d428d502-3119-4529-ab5a-f55588f1b98b   [SWAP]
sdb
└─sdb1          ext4                        be5c9b0e-57d3-4574-ba58-5431a14b3a63   /newdisk
sr0             iso9660     CentOS 7 x86_64 2018-11-25-23-54-16-00

卸载

语法

umount 设备名称 或者挂载目录

umount /dev/sdb1    或者umount /newdisk

选项

选项:
-f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下;
-n :不升级 /etc/mtab 情况下卸除。

例子

umount /dev/sdb1

查看设备。会发现sdb1后面的挂载点没有了

lsblk -f
NAME            FSTYPE      LABEL           UUID                                   MOUNTPOINT
sda
├─sda1          xfs                         248990cf-cffe-4b3f-ac4e-d2ee25459d01   /boot
└─sda2          LVM2_member                 Zl2Twp-gutn-oVHF-fCqn-YPRj-1vp4-KllWxh
  ├─centos-root xfs                         ef6483e7-9209-4f5d-9f53-5ed246ca47c4   /
  └─centos-swap swap                        d428d502-3119-4529-ab5a-f55588f1b98b   [SWAP]
sdb
└─sdb1          ext4                        be5c9b0e-57d3-4574-ba58-5431a14b3a63
sr0             iso9660     CentOS 7 x86_64 2018-11-25-23-54-16-00

7.磁盘实用指令

1.统计文件夹下文件的个数

#统计etc下文件的个数
ls -l /etc | grep "^-" | wc -l

2.统计文件夹下目录的个数

#统计etc下目录的个数
ls -l /etc | grep "^d" | wc -l

3.统计文件夹下文件的个数,包括子文件夹里的

ls -lR /etc | grep "^-" | wc -l

4.统计文件夹下目录的个数,包括子文件夹里的

ls -lR /etc | grep "^d" | wc -l

5.以树状显示目录结构

1.安装tree
yum install tree

2.显示tmp
tree /tmp

/tmp/
├── systemd-private-6aabace300d647608d7f97fd4ca60046-chronyd.service-q3Lgjw
│   └── tmp
├── vmware-root_5964-726237471
├── vmware-root_5999-1681333115
├── vmware-root_6017-1715412458
└── vmware-root_6028-726237631

6 directories, 0 files