Ubuntu 系统监控命令
在Ubuntu系统中,监控系统资源的使用情况、进程状态和性能指标是系统管理和故障排查的重要部分。本文将介绍一些常用的系统监控命令,帮助你更好地了解和管理你的Ubuntu系统。
1. top
命令
top
命令是一个实时系统监控工具,可以显示系统的整体状态和各个进程的资源使用情况。
使用示例
top
输出示例
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
命令
htop
是 top
命令的增强版,提供了更友好的界面和更多的功能。
安装 htop
sudo apt-get install htop
使用示例
htop
输出示例
htop
的输出与 top
类似,但界面更加直观,支持鼠标操作和颜色区分。
htop
提供了更多的交互功能,例如可以通过方向键选择进程,按 F9
键杀死进程。
3. vmstat
命令
vmstat
命令用于显示虚拟内存统计信息,包括系统进程、内存、分页、块IO、陷阱和CPU活动。
使用示例
vmstat 1 5
输出示例
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
命令用于显示系统的内存使用情况,包括物理内存、交换内存和内核缓冲区。
使用示例
free -h
输出示例
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
sudo apt-get install sysstat
使用示例
iostat 1 5
输出示例
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
命令用于显示网络连接、路由表、接口统计信息等。
使用示例
netstat -tuln
输出示例
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
命令用于显示文件系统的磁盘空间使用情况。
使用示例
df -h
输出示例
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
命令用于显示目录或文件的磁盘使用情况。
使用示例
du -sh /var/log
输出示例
1.2G /var/log
解释
- -s: 显示总计。
- -h: 以人类可读的格式显示大小。
du
命令可以帮助你找出占用磁盘空间最多的目录或文件。
9. ps
命令
ps
命令用于显示当前进程的状态。
使用示例
ps aux
输出示例
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
命令用于列出打开的文件和进程。
使用示例
lsof -i :22
输出示例
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
可以帮助你查看哪些进程正在使用特定的文件或端口。
实际案例
假设你发现系统响应变慢,你可以使用以下步骤来排查问题:
- 使用
top
或htop
查看哪些进程占用了大量的CPU或内存。 - 使用
vmstat
查看系统的整体负载情况。 - 使用
iostat
检查磁盘IO是否成为瓶颈。 - 使用
netstat
查看网络连接是否正常。 - 使用
df
和du
检查磁盘空间使用情况。 - 使用
ps
和lsof
查看具体进程的状态和打开的文件。
总结
通过本文,你学习了如何使用Ubuntu系统监控命令来查看系统资源使用情况、进程状态和性能指标。这些命令是系统管理和故障排查的重要工具,掌握它们将帮助你更好地管理和优化你的Ubuntu系统。
附加资源
练习
- 使用
top
命令查看系统中占用CPU最多的进程。 - 使用
free
命令查看系统的内存使用情况。 - 使用
df
和du
命令检查/var/log
目录的磁盘使用情况。 - 使用
netstat
命令查看系统上正在监听的端口。
通过完成这些练习,你将更熟练地掌握Ubuntu系统监控命令的使用。