Linux运维——硬件管理
Linux运维硬件管理
- 一、Linux硬件管理要点
- 二、命令常见用法
- 2.1、df
- 2.1.1、基本用法
- 2.1.2、常用操作
- 2.1.3、输出解析
- 2.1.4、高级用法
- 2.1.5、注意事项
- 2.1.6、与其它工具比较
- 2.2、du
- 2.2.1、基本用法
- 2.2.2、常用操作
- 2.2.3、输出解析
- 2.2.4、高级用法
- 2.2.5、注意事项
- 2.2.6、与其他工具的比较
- 2.3、top
- 2.3.1、基本用法
- 2.3.2、界面说明
- 2.3.3、常用操作
- 2.3.4、交互式命令
- 2.3.5、高级用法
- 2.3.6、注意事项
- 2.3.7、与其它工具的比较
- 2.4、free
- 2.4.1、基本用法
- 2.4.2、输出解析
- 2.4.3、常用操作
- 2.4.4、高级用法
- 2.4.5、注意事项
- 2.4.6、与其它工具比较
- 2.5、iotop
- 2.5.1、安装iotop
- 2.5.2、基本用法
- 2.5.3、界面说明
- 2.5.4、常用操作示例
- 2.5.5、交互式命令
- 2.5.6、高级用法
- 2.5.7、注意事项
- 2.5.8、与其它工具的比较
一、Linux硬件管理要点
- 查看磁盘空间 - 使用 df
- 查看文件或目录的磁盘空间 - 使用 du
- 实时查看系统整体运行状态(如:CPU、内存) - 使用 top
- 查看已使用和未使用的内存 - 使用 free
- 查看磁盘 I/O 使用状况 - 使用 iotop
二、命令常见用法
2.1、df
df 命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为 KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
2.1.1、基本用法
df [选项] [文件或目录]
常用选项:
-h
以人类可读的格式显示(如 KB、MB、GB)。-T
显示文件系统类型。-i
显示 inode 使用情况,而不是磁盘空间。-a
显示所有文件系统,包括伪文件系统(如 proc)。-l
仅显示本地文件系统。-x
排除指定类型的文件系统。--total
显示总计信息。
2.1.2、常用操作
显示磁盘空间使用情况
df
# 显示所有挂载文件系统的磁盘空间使用情况。
以人类可读的格式显示
df -h
#以 KB、MB、GB 等易读格式显示磁盘空间使用情况。
显示文件系统类型
df -T
#显示文件系统类型(如 ext4、xfs、tmpfs 等)。
显示 inode 使用情况
df -i
#显示文件系统的 inode 使用情况,而不是磁盘空间。
显示所有文件系统
df -a
#显示所有文件系统,包括伪文件系统(如 proc、sysfs)。
仅显示本地文件系统
df -l
#仅显示本地文件系统,排除网络文件系统(如 NFS)。
排除指定类型的文件系统
df -x tmpfs
#排除指定类型的文件系统(如 tmpfs)。
显示总计信息
df --total
#显示所有文件系统的总计信息。
显示指定文件或目录所在文件系统的磁盘空间
df /path/to/file_or_directory
#显示指定文件或目录所在文件系统的磁盘空间使用情况。
2.1.3、输出解析
默认输出
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 10485760 5242880 5242880 50% /
tmpfs 102400 0 102400 0% /dev/shm
- Filesystem:文件系统名称或设备路径。
- 1K-blocks:文件系统的总大小(以 1KB 为单位)。
- Used:已使用的磁盘空间。
- Available:可用的磁盘空间。
- Use%:已用空间的百分比。
- Mounted on:文件系统的挂载点。
人类可读格式输出
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 10G 5.0G 5.0G 50% /
tmpfs 100M 0 100M 0% /dev/shm
- Size:文件系统的总大小(如 GB、MB)。
- Used:已使用的磁盘空间。
- Avail:可用的磁盘空间。
- Use%:已用空间的百分比。
显示文件系统类型:
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 10485760 5242880 5242880 50% /
tmpfs tmpfs 102400 0 102400 0% /dev/shm
- Type:文件系统类型(如 ext4、tmpfs)。
显示inode使用情况:
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda1 655360 12345 643015 2% /
tmpfs 256000 1 255999 1% /dev/shm
- Inodes:文件系统的总 inode 数量。
- IUsed:已使用的 inode 数量。
- IFree:可用的 inode 数量。
- IUse%:已用 inode 的百分比。
2.1.4、高级用法
显示指定文件系统的磁盘空间
df -h /dev/sda1
#显示指定文件系统(如 /dev/sda1)的磁盘空间使用情况。
排除特定文件系统
df -x tmpfs -x devtmpfs
#排除指定类型的文件系统(如 tmpfs 和 devtmpfs)。
显示总计信息
df -h --total
#显示所有文件系统的总计信息。
结合 grep 过滤输出
df -h | grep /dev/sda1
#仅显示包含 /dev/sda1 的行。
显示特定目录的磁盘空间
df -h /home
# 显示 /home 目录所在文件系统的磁盘空间使用情况。
2.1.5、注意事项
- 权限:df 命令通常不需要管理员权限,但如果文件系统挂载点为只读或需要特殊权限,可能需要 sudo。
- 伪文件系统:某些文件系统(如 proc、sysfs)是伪文件系统,不会占用实际磁盘空间。
2.1.6、与其它工具比较
- du:显示目录或文件的磁盘使用情况。
- lsblk:显示块设备信息。
- fdisk:显示和操作磁盘分区表。
2.2、du
du 命令也是查看使用空间的,但是与 df 命令不同的是:du 命令是对文件和目录磁盘使用的空间的查看,还是和 df 命令有一些区别的。
2.2.1、基本用法
du [选项] [文件或目录]
常用选项:
-h
以人类可读的格式显示(如 KB、MB、GB)。-s
显示总计大小,而不显示每个子目录的详细信息。-a
显示所有文件和目录的大小,而不仅仅是目录。-c
显示总计大小,并在最后一行显示总计。--max-depth=N
限制显示的目录深度为 N 级。--exclude=PATTERN
排除匹配指定模式的文件或目录。--time
显示文件或目录的最后修改时间。
2.2.2、常用操作
显示当前目录的磁盘使用情况
du
#显示当前目录及其子目录的磁盘使用情况。
以人类可读的格式显示
du -h
#以 KB、MB、GB 等易读格式显示磁盘使用情况。
显示总计大小
du -s
#显示当前目录的总计大小,而不显示子目录的详细信息。
显示所有文件和目录的大小
du -a
#显示当前目录下所有文件和目录的大小。
显示总计并显示总计行
du -c
#显示当前目录及其子目录的磁盘使用情况,并在最后一行显示总计。
限制目录深度
du --max-depth=1
#仅显示当前目录和其直接子目录的磁盘使用情况。
排除指定文件或目录
du --exclude="*.log"
#排除所有以 .log 结尾的文件。
显示文件或目录的最后修改时间
du --time
#显示文件或目录的磁盘使用情况和最后修改时间。
显示指定文件或目录的磁盘使用情况
du /path/to/file_or_directory
#显示指定文件或目录的磁盘使用情况。
2.2.3、输出解析
默认输出
4 ./dir1
8 ./dir2
12 .
- 第一列:磁盘使用大小(以 KB 为单位)。
- 第二列:文件或目录的路径。
人类可读格式输出
4.0K ./dir1
8.0K ./dir2
12K .
- 第一列:磁盘使用大小(如 KB、MB、GB)。
- 第二列:文件或目录的路径。
显示总计大小
12
```.
- 第一列:总计磁盘使用大小。
- 第二列:当前目录的路径。
显示总计并显示总计行
```sh
4 ./dir1
8 ./dir2
12 .
12 total
- 最后一行:总计磁盘使用大小。
显示所有文件和目录的大小
4 ./dir1/file1
4 ./dir1
8 ./dir2/file2
8 ./dir2
12 .
- 第一列:磁盘使用大小。
- 第二列:文件或目录的路径。
显示文件或目录的最后修改时间
4 2023-10-01 12:34 ./dir1
8 2023-10-01 12:35 ./dir2
12 2023-10-01 12:36 .
- 第二列:最后修改时间。
- 第三列:文件或目录的路径。
2.2.4、高级用法
显示指定目录的磁盘使用情况
du -h /path/to/directory
#显示指定目录的磁盘使用情况。
显示总计大小并以人类可读格式显示
du -sh /path/to/directory
#显示指定目录的总计大小,并以人类可读格式显示。
限制目录深度并以人类可读格式显示
du -h --max-depth=1 /path/to/directory
#显示指定目录及其直接子目录的磁盘使用情况,并以人类可读格式显示。
排除指定文件或目录并以人类可读格式显示
du -h --exclude="*.log" /path/to/directory
#排除所有以 .log 结尾的文件,并以人类可读格式显示磁盘使用情况。
显示总计并显示总计行并以人类可读格式显示
du -ch /path/to/directory
#显示指定目录及其子目录的磁盘使用情况,并在最后一行显示总计,并以人类可读格式显示。
显示文件或目录的最后修改时间并以人类可读格式显示
du -h --time /path/to/directory
#显示指定目录的磁盘使用情况和最后修改时间,并以人类可读格式显示。
结合 sort 按大小排序
du -h /path/to/directory | sort -hr
#显示指定目录的磁盘使用情况,并按大小从大到小排序。
结合 grep 过滤输出
du -h /path/to/directory | grep "pattern"
#仅显示包含指定模式的行。
2.2.5、注意事项
- 权限:du 命令通常不需要管理员权限,但如果文件或目录需要特殊权限,可能需要 sudo。
- 大目录:对于非常大的目录,du 命令可能会花费较长时间。
2.2.6、与其他工具的比较
- df:显示文件系统的磁盘空间使用情况。
- ls:显示文件和目录的详细信息,但不显示磁盘使用情况。
- ncdu:交互式磁盘使用情况分析工具。
2.3、top
top 命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过 top 命令所提供的互动式界面,用热键可以管理。
2.3.1、基本用法
top [选项]
常用选项
-d <秒>
设置刷新间隔时间(默认 3 秒)。-p <PID>
仅显示指定进程 ID 的信息。-u <用户名>
仅显示指定用户的进程信息。-n <次数>
设置刷新次数后退出。-b
以批处理模式运行,适合输出到文件。-H
显示线程信息。-c
显示完整的命令路径。
2.3.2、界面说明
运行 top 后,界面分为两部分:汇总信息 和 进程列表。
汇总信息:
top - 12:34:56 up 1 day, 2:34, 1 user, load average: 0.15, 0.10, 0.05
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.5 us, 0.5 sy, 0.0 ni, 97.5 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 8000.0 total, 5000.0 free, 1000.0 used, 2000.0 buff/cache
MiB Swap: 2000.0 total, 2000.0 free, 0.0 used. 6000.0 avail Mem
第一行:
- 当前时间:12:34:56
- 系统运行时间:up 1 day, 2:34
- 当前登录用户数:1 user
- 系统负载:load average: 0.15, 0.10, 0.05(1 分钟、5 分钟、15 分钟的平均负载)
第二行:
- 总进程数:123 total
- 运行中的进程数:1 running
- 休眠中的进程数:122 sleeping
- 停止的进程数:0 stopped
- 僵尸进程数:0 zombie
第三行(CPU 使用情况):
- 用户空间占用 CPU 百分比:1.5 us
- 内核空间占用 CPU 百分比:0.5 sy
- 用户进程优先级调整占用 CPU 百分比:0.0 ni
- 空闲 CPU 百分比:97.5 id
- 等待 I/O 操作占用 CPU 百分比:0.5 wa
- 硬件中断占用 CPU 百分比:0.0 hi
- 软件中断占用 CPU 百分比:0.0 si
- 虚拟机占用 CPU 百分比:0.0 st
第四行(内存使用情况):
- 总内存:8000.0 MiB
- 空闲内存:5000.0 MiB
- 已用内存:1000.0 MiB
- 缓存/缓冲区内存:2000.0 MiB
第五行(交换分区使用情况):
- 总交换分区:2000.0 MiB
- 空闲交换分区:2000.0 MiB
- 已用交换分区:0.0 MiB
- 可用内存:6000.0 MiB
进程列表:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1234 user 20 0 10000 5000 2000 R 10.0 0.6 0:00.10 process1
5678 user 20 0 20000 8000 3000 S 5.0 1.0 0:00.05 process2
- PID:进程 ID。
- USER:进程所有者。
- PR:进程优先级。
- NI:进程的 nice 值(优先级调整值)。
- VIRT:进程使用的虚拟内存总量。
- RES:进程使用的物理内存总量。
- SHR:进程使用的共享内存总量。
- S:进程状态(R=运行中,S=休眠中,Z=僵尸进程)。
- %CPU:进程占用的 CPU 百分比。
- %MEM:进程占用的内存百分比。
- TIME+:进程使用的 CPU 时间总计。
- COMMAND:进程的命令名称。
2.3.3、常用操作
刷新间隔时间
top -d 1
#设置刷新间隔时间为 1 秒。
仅显示指定进程
top -p 1234
#仅显示进程 ID 为 1234 的信息。
仅显示指定用户的进程
top -u username
#仅显示指定用户的进程信息。
显示线程信息
top -H
#显示线程信息,而不是进程信息。
显示完整的命令路径
top -c
#显示完整的命令路径,而不是命令名称。
以批处理模式运行
top -b -n 3 > top.log
#以批处理模式运行,刷新 3 次后将结果输出到 top.log 文件。
2.3.4、交互式命令
在 top 运行过程中,可以使用以下交互式命令:
命令 说明
k
终止指定进程(输入进程 ID 后回车)。r
调整进程的 nice 值(优先级)。f
进入字段选择界面,自定义显示列。o
按指定字段排序(如 %CPU、%MEM)。P
按 CPU 使用率排序。M
按内存使用率排序。T
按运行时间排序。h
显示帮助信息。q
退出 top。1
显示所有 CPU 核心的使用情况。z
切换颜色显示。W
保存当前配置到 ~/.toprc 文件。
2.3.5、高级用法
显示所有 CPU 核心的使用情况
top
#按下 1 键,显示所有 CPU 核心的使用情况。
按 CPU 使用率排序
top
#按下 P 键,按 CPU 使用率排序。
按内存使用率排序
top
#按下 M 键,按内存使用率排序。
保存当前配置
top
#按下 W 键,保存当前配置到 ~/.toprc 文件。
2.3.6、注意事项
- 实时更新:top 是实时更新的工具,适合监控系统的动态变化。
- 权限:某些操作(如终止进程)可能需要管理员权限(sudo)。
- 资源占用:top 本身会占用一定的系统资源,尤其是在高负载情况下
2.3.7、与其它工具的比较
- htop:top 的增强版,支持鼠标操作和更直观的界面。
- ps:显示当前进程的快照,适合查看静态信息。
- vmstat:显示系统的整体性能统计信息。
2.4、free
free 命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
2.4.1、基本用法
free [选项]
常用选项:
-h
以人类可读的格式显示(如 KB、MB、GB)。-b
以字节为单位显示。-k
以 KB 为单位显示。-m
以 MB 为单位显示。-g
以 GB 为单位显示。-t
显示总计行(物理内存 + 交换分区)。-s <秒>
设置刷新间隔时间,持续显示内存使用情况。-c <次数>
设置刷新次数后退出。
2.4.2、输出解析
默认输出
total used free shared buff/cache available
Mem: 8000000 3000000 2000000 500000 3000000 4500000
Swap: 2000000 500000 1500000
- total:总内存大小。
- used:已使用的内存大小。
- free:空闲的内存大小。
- shared:共享内存大小。
- buff/cache:缓存和缓冲区使用的内存大小。
- available:可用内存大小(估计可用于新进程的内存)。
以人类可读格式显示
free -h
#输出示例:
total used free shared buff/cache available
Mem: 7.6G 2.8G 1.9G 488M 2.9G 4.3G
Swap: 1.9G 488M 1.4G
- 以 GB、MB 等易读格式显示内存使用情况。
显示总计行
free -t
#输出示例:
total used free shared buff/cache available
Mem: 8000000 3000000 2000000 500000 3000000 4500000
Swap: 2000000 500000 1500000
Total: 10000000 3500000 3500000
- Total:物理内存和交换分区的总计。
2.4.3、常用操作
以人类可读格式显示内存使用情况
free -h
以 MB 为单位显示内存使用情况
free -m
显示总计行
free -t
持续刷新显示内存使用情况
free -s 2
# 每 2 秒刷新一次内存使用情况。
设置刷新次数后退出
free -c 5 -s 1
#每 1 秒刷新一次,刷新 5 次后退出。
2.4.4、高级用法
结合 watch 命令实时监控
watch -n 1 free -h
#每 1 秒刷新一次,实时监控内存使用情况。
结合 grep 过滤输出
free -h | grep Mem
#仅显示物理内存的使用情况。
结合 awk 提取特定字段
free -h | awk '/Mem/{print "Used Memory: " $3}'
#提取已用内存的大小。
2.4.5、注意事项
- 缓存和缓冲区:buff/cache 列显示的是缓存和缓冲区使用的内存,这部分内存可以被释放,因此实际可用内存通常大于 free 列的值。
- 可用内存:available 列表示系统估计可用于新进程的内存大小,是更准确的可用内存指标。
- 交换分区:如果 Swap 的 used 列值较大,说明物理内存不足,系统正在使用交换分区。
2.4.6、与其它工具比较
- top:显示系统的实时运行状态,包括内存、CPU、进程等信息。
- vmstat:显示系统的整体性能统计信息,包括内存、CPU、I/O 等。
- htop:top 的增强版,支持更直观的界面和鼠标操作。
2.5、iotop
iotop 命令是一个用来监视磁盘 I/O 使用状况的 top 类工具。iotop 具有与 top 相似的 UI,其中包括 PID、用户、I/O、进程等相关信息。Linux 下的 IO 统计工具如 iostat,nmon 等大多数是只能统计到 per 设备的读写情况,如果你想知道每个进程是如何使用 IO 的就比较麻烦,使用 iotop 命令可以很方便的查看。
2.5.1、安装iotop
在大多数 Linux 发行版中,iotop 可能没有预装,可以通过以下命令安装:
Ubuntu/Debian
sudo apt-get install iotop
CentOS/RHEL
sudo yum install iotop
Fedora
sudo dnf install iotop
Arch Linux
sudo pacman -S iotop
2.5.2、基本用法
sudo iotop [选项]
常用选项:
-o
仅显示正在执行 I/O 操作的进程。-P
仅显示进程,不显示线程。-a
显示累计 I/O 统计信息。-b
以批处理模式运行,适合输出到文件。-d <秒>
设置刷新间隔时间(默认 1 秒)。-n <次数>
设置刷新次数后退出。-k
以 KB/s 为单位显示 I/O 速度。-p <PID>
仅显示指定进程 ID 的 I/O 信息。-u <用户名>
仅显示指定用户的进程 I/O 信息。
2.5.3、界面说明
运行 iotop 后,界面分为两部分:汇总信息 和 进程列表。
汇总信息:
Total DISK READ: 1.00 K/s | Total DISK WRITE: 10.00 K/s
- Total DISK READ:所有进程的磁盘读取速度。
- Total DISK WRITE:所有进程的磁盘写入速度。
进程列表:
PID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
123 be/4 user 0.00 K/s 10.00 K/s 0.00 % 0.00 % process1
456 be/4 user 1.00 K/s 0.00 K/s 0.00 % 0.00 % process2
- PID:进程 ID。
- PRIO:进程的 I/O 优先级(be=最佳效果,rt=实时)。
- USER:进程所有者。
- DISK READ:进程的磁盘读取速度。
- DISK WRITE:进程的磁盘写入速度。
- SWAPIN:进程的交换分区使用百分比。
- IO:进程的 I/O 操作占用 CPU 的百分比。
- COMMAND:进程的命令名称。
2.5.4、常用操作示例
以默认模式运行
sudo iotop
#显示所有进程的磁盘 I/O 使用情况。
仅显示正在执行 I/O 操作的进程
sudo iotop -o
#仅显示正在执行 I/O 操作的进程。
以批处理模式运行
sudo iotop -b -n 3 > iotop.log
#以批处理模式运行,刷新 3 次后将结果输出到 iotop.log 文件。
设置刷新间隔时间
sudo iotop -d 2
#每 2 秒刷新一次。
仅显示指定进程的 I/O 信息
sudo iotop -p 123
#仅显示进程 ID 为 123 的 I/O 信息。
仅显示指定用户的进程 I/O 信息
sudo iotop -u username
#仅显示指定用户的进程 I/O 信息。
显示累计 I/O 统计信息
sudo iotop -a
#显示累计 I/O 统计信息。
2.5.5、交互式命令
在 iotop 运行过程中,可以使用以下交互式命令:
r
调整进程的 I/O 优先级。o
仅显示正在执行 I/O 操作的进程。P
按进程排序。p
按 PID 排序。a
显示累计 I/O 统计信息。q
退出 iotop。i
显示或隐藏空闲进程。h
显示帮助信息。
2.5.6、高级用法
按磁盘读取速度排序
sudo iotop
#按下 P 键,按进程排序,然后按下 r 键,按磁盘读取速度排序。
按磁盘写入速度排序
sudo iotop
#按下 P 键,按进程排序,然后按下 w 键,按磁盘写入速度排序。
显示线程信息
sudo iotop
#默认显示线程信息,如果需要隐藏线程信息,可以使用 -P 选项。
2.5.7、注意事项
- 权限:iotop 需要管理员权限(sudo)才能运行。
- 实时更新:iotop 是实时更新的工具,适合监控系统的动态变化。
- 资源占用:iotop 本身会占用一定的系统资源,尤其是在高负载情况下。
2.5.8、与其它工具的比较
- iostat:显示系统的整体磁盘 I/O 统计信息。
- vmstat:显示系统的整体性能统计信息,包括内存、CPU、I/O 等。
- dstat:显示系统的实时性能统计信息,包括 CPU、内存、磁盘 I/O 等。