跳到主要内容

Ubuntu 系统监控命令

在Ubuntu系统中,监控系统资源的使用情况、进程状态和性能指标是系统管理和故障排查的重要部分。本文将介绍一些常用的系统监控命令,帮助你更好地了解和管理你的Ubuntu系统。

1. top 命令

top 命令是一个实时系统监控工具,可以显示系统的整体状态和各个进程的资源使用情况。

使用示例

bash
top

输出示例

plaintext
top - 14:32:01 up  2:15,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 98 total, 1 running, 97 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3932.8 total, 1024.0 free, 2048.0 used, 860.8 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1740.8 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 169016 10832 7984 S 0.0 0.3 0:01.23 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp

解释

  • PID: 进程ID。
  • USER: 运行该进程的用户。
  • %CPU: 进程占用的CPU百分比。
  • %MEM: 进程占用的内存百分比。
  • TIME+: 进程使用的CPU时间总计。
  • COMMAND: 启动进程的命令。
提示

按下 q 键可以退出 top 命令。

2. htop 命令

htoptop 命令的增强版,提供了更友好的界面和更多的功能。

安装 htop

bash
sudo apt-get install htop

使用示例

bash
htop

输出示例

htop 的输出与 top 类似,但界面更加直观,支持鼠标操作和颜色区分。

备注

htop 提供了更多的交互功能,例如可以通过方向键选择进程,按 F9 键杀死进程。

3. vmstat 命令

vmstat 命令用于显示虚拟内存统计信息,包括系统进程、内存、分页、块IO、陷阱和CPU活动。

使用示例

bash
vmstat 1 5

输出示例

plaintext
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 1024000 204800 860800 0 0 0 0 10 20 0 0 99 0 0
0 0 0 1024000 204800 860800 0 0 0 0 10 20 0 0 99 0 0

解释

  • r: 运行队列中的进程数。
  • b: 等待IO的进程数。
  • swpd: 使用的虚拟内存量。
  • free: 空闲内存量。
  • buff: 用作缓冲区的内存量。
  • cache: 用作缓存的内存量。
  • si: 从磁盘交换到内存的页面数。
  • so: 从内存交换到磁盘的页面数。
  • bi: 从块设备读取的块数。
  • bo: 写入块设备的块数。
  • in: 每秒中断数。
  • cs: 每秒上下文切换数。
  • us: 用户空间占用CPU百分比。
  • sy: 内核空间占用CPU百分比。
  • id: 空闲CPU百分比。
  • wa: 等待IO的CPU百分比。
  • st: 虚拟机偷取的CPU百分比。
警告

vmstat 的输出可能会因系统负载不同而有所变化。

4. free 命令

free 命令用于显示系统的内存使用情况,包括物理内存、交换内存和内核缓冲区。

使用示例

bash
free -h

输出示例

plaintext
              total        used        free      shared  buff/cache   available
Mem: 3.8G 1.0G 1.0G 200M 1.8G 2.3G
Swap: 2.0G 0B 2.0G

解释

  • total: 总内存量。
  • used: 已使用的内存量。
  • free: 空闲的内存量。
  • shared: 共享内存量。
  • buff/cache: 缓冲区和缓存的内存量。
  • available: 可用的内存量。
提示

使用 -h 选项可以以人类可读的格式显示内存大小。

5. iostat 命令

iostat 命令用于监控系统的输入/输出设备负载情况。

安装 iostat

bash
sudo apt-get install sysstat

使用示例

bash
iostat 1 5

输出示例

plaintext
Linux 5.4.0-42-generic (hostname) 	09/01/2023 	_x86_64_	(4 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
0.10 0.00 0.05 0.01 0.00 99.84

Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sda 0.10 0.20 0.10 100 50

解释

  • tps: 每秒传输次数。
  • kB_read/s: 每秒读取的数据量(KB)。
  • kB_wrtn/s: 每秒写入的数据量(KB)。
  • kB_read: 读取的总数据量(KB)。
  • kB_wrtn: 写入的总数据量(KB)。
注意

iostat 的输出可以帮助你识别IO瓶颈。

6. netstat 命令

netstat 命令用于显示网络连接、路由表、接口统计信息等。

使用示例

bash
netstat -tuln

输出示例

plaintext
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*

解释

  • Proto: 协议类型(tcp/udp)。
  • Recv-Q: 接收队列。
  • Send-Q: 发送队列。
  • Local Address: 本地地址和端口。
  • Foreign Address: 远程地址和端口。
  • State: 连接状态。
备注

netstat 可以帮助你查看系统上正在监听的端口和活动的网络连接。

7. df 命令

df 命令用于显示文件系统的磁盘空间使用情况。

使用示例

bash
df -h

输出示例

plaintext
Filesystem      Size  Used Avail Use% Mounted on
udev 1.9G 0 1.9G 0% /dev
tmpfs 393M 1.2M 392M 1% /run
/dev/sda1 20G 10G 10G 50% /

解释

  • Filesystem: 文件系统名称。
  • Size: 总大小。
  • Used: 已使用的大小。
  • Avail: 可用的大小。
  • Use%: 使用百分比。
  • Mounted on: 挂载点。
提示

使用 -h 选项可以以人类可读的格式显示磁盘空间。

8. du 命令

du 命令用于显示目录或文件的磁盘使用情况。

使用示例

bash
du -sh /var/log

输出示例

plaintext
1.2G    /var/log

解释

  • -s: 显示总计。
  • -h: 以人类可读的格式显示大小。
警告

du 命令可以帮助你找出占用磁盘空间最多的目录或文件。

9. ps 命令

ps 命令用于显示当前进程的状态。

使用示例

bash
ps aux

输出示例

plaintext
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root 1 0.0 0.3 169016 10832 ? Ss 14:15 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 14:15 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< 14:15 0:00 [rcu_gp]

解释

  • USER: 运行进程的用户。
  • PID: 进程ID。
  • %CPU: 进程占用的CPU百分比。
  • %MEM: 进程占用的内存百分比。
  • VSZ: 虚拟内存大小。
  • RSS: 常驻内存大小。
  • TTY: 终端。
  • STAT: 进程状态。
  • START: 进程启动时间。
  • TIME: 进程使用的CPU时间。
  • COMMAND: 启动进程的命令。
备注

ps aux 可以显示系统中所有进程的详细信息。

10. lsof 命令

lsof 命令用于列出打开的文件和进程。

使用示例

bash
lsof -i :22

输出示例

plaintext
COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd 1234 root 3u IPv4 12345 0t0 TCP *:ssh (LISTEN)

解释

  • COMMAND: 命令名称。
  • PID: 进程ID。
  • USER: 运行进程的用户。
  • FD: 文件描述符。
  • TYPE: 文件类型。
  • DEVICE: 设备号。
  • SIZE/OFF: 文件大小或偏移量。
  • NODE: 节点号。
  • NAME: 文件名。
注意

lsof 可以帮助你查看哪些进程正在使用特定的文件或端口。

实际案例

假设你发现系统响应变慢,你可以使用以下步骤来排查问题:

  1. 使用 tophtop 查看哪些进程占用了大量的CPU或内存。
  2. 使用 vmstat 查看系统的整体负载情况。
  3. 使用 iostat 检查磁盘IO是否成为瓶颈。
  4. 使用 netstat 查看网络连接是否正常。
  5. 使用 dfdu 检查磁盘空间使用情况。
  6. 使用 pslsof 查看具体进程的状态和打开的文件。

总结

通过本文,你学习了如何使用Ubuntu系统监控命令来查看系统资源使用情况、进程状态和性能指标。这些命令是系统管理和故障排查的重要工具,掌握它们将帮助你更好地管理和优化你的Ubuntu系统。

附加资源

练习

  1. 使用 top 命令查看系统中占用CPU最多的进程。
  2. 使用 free 命令查看系统的内存使用情况。
  3. 使用 dfdu 命令检查 /var/log 目录的磁盘使用情况。
  4. 使用 netstat 命令查看系统上正在监听的端口。

通过完成这些练习,你将更熟练地掌握Ubuntu系统监控命令的使用。