1.df
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法
df [-ahikHTm] [目录或文件名]
选项
-a :列出所有的文件系统,包括系统特有的 /proc 等文件系统;-k :以 KBytes 的容量显示各文件系统;-m :以 MBytes 的容量显示各文件系统;-h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示;-H :以 M=1000K 取代 M=1024K 的进位方式;-T :显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出;-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

重启后,查看设备挂载并没有消失
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
