第12章 监视系统资源

所属:第四部分 环境 来源:Linux命令速查手册

系统运行状况如何?进程、内存、磁盘、打开的文件……本章介绍监控系统资源的常用命令。


12.1 查看当前正在运行的所有进程

ps aux
ps -ef

查看系统中所有运行的进程。

常用参数

  • a - 所有用户的进程
  • u - 显示用户/所有者信息
  • x - 包括没有控制终端的进程
  • -e - 所有进程(同a)
  • -f - 完整格式输出

ps aux 输出列说明

含义
USER进程所有者
PID进程ID
%CPUCPU使用率
%MEM内存使用率
VSZ虚拟内存大小(KB)
RSS物理内存大小(KB)
TTY终端
STAT进程状态
START启动时间
TIME累计CPU时间
COMMAND命令名

常见进程状态

状态含义
R运行中
S睡眠(等待)
D不可中断睡眠(通常IO等待)
Z僵尸进程
T停止/暂停
s会话首进程
l多线程
+前台进程组

12.2 查看进程树

pstree
ps auxf
ps -ejH

以树状结构显示进程父子关系,直观看到谁启动了谁。


12.3 查看特定用户拥有的进程

ps -u username
ps -U username

查看指定用户的所有进程。


12.4 终止正在运行的进程

kill pid
kill -9 pid          # 强制终止(SIGKILL)
kill -TERM pid       # 优雅终止(SIGTERM,默认)
kill -HUP pid        # 挂起信号,常用于重载配置

向进程发送信号终止它。

常用信号

信号编号名称作用
1HUP挂起重新加载配置
2INT中断同Ctrl+C
9KILL强制杀死不可忽略,立即终止
15TERM终止默认,优雅退出

优先用 kill -15(默认),给进程保存数据的机会;实在不行再用 kill -9 强杀。

按名称杀进程

killall firefox
pkill firefox
pkill -f "python script.py"
  • killall 按精确名称
  • pkill 支持模糊匹配
  • -f 匹配完整命令行

12.5 查看正在运行的进程的动态更新列表

top
htop

实时监控进程和系统资源,动态刷新。

top 常用快捷键

按键功能
q退出
h帮助
k杀死进程
r调整优先级(renice)
P按CPU排序(默认)
M按内存排序
T按运行时间排序
1显示每个CPU核心
u过滤指定用户

htop

更友好的增强版top,支持鼠标操作、颜色显示、树形视图等。需要额外安装。


12.6 列出打开的文件

lsof

列出所有打开的文件(Linux中一切皆文件,包括网络连接、设备等)。

输出内容很多,通常配合过滤使用。


12.7 列出某个用户打开的文件

lsof -u username

查看指定用户打开的所有文件。


12.8 列出正在使用特定文件的用户

lsof /path/to/file
lsof /var/log/syslog

查看哪些进程在使用某个文件。

典型用途:卸载U盘时提示设备忙,用lsof找哪个进程占用了。


12.9 列出特定程序的进程

lsof -c program_name
pidof program_name
pgrep program_name

按程序名查找相关进程。

查看端口占用

lsof -i :80
netstat -tlnp | grep :80
ss -tlnp | grep :80

查看哪个进程占用了某个端口。


12.10 显示系统RAM的信息

free
free -h        # 人类可读格式
free -m        # 以MB为单位
free -g        # 以GB为单位

查看内存使用情况:总内存、已用、空闲、缓存、可用。

输出列说明

含义
total总内存
used已使用
free完全空闲
shared共享内存
buff/cache缓冲区和缓存
available实际可用(应用程序可获得的)

Linux会尽量用空闲内存做缓存提升性能,所以free少不代表内存不够,看 available 更准确。


12.11 显示文件系统的磁盘使用情况

df
df -h        # 人类可读
df -T        # 显示文件系统类型
df -i        # 显示inode使用情况

查看各分区的磁盘空间使用情况。

输出列说明

含义
Filesystem文件系统/设备
Size总大小
Used已用
Avail可用
Use%使用率
Mounted on挂载点

inode满了也会导致无法创建新文件,即使磁盘还有空间。用 df -i 查看。


12.12 报告目录使用的文件空间

du
du -h
du -sh directory/

查看目录/文件占用的磁盘空间大小。

  • 默认递归显示每个子目录
  • 单位默认是KB

12.13 只报告目录使用的总空间

du -sh directory/
du --summarize --human-readable directory/

只显示总计,不列子目录。

常用组合

# 当前目录下各子目录大小排序
du -sh */ | sort -h
 
# 找最大的10个文件/目录
du -ah /path | sort -rh | head -10

12.14 小结

系统监控命令速查

类别命令用途
进程ps aux查看所有进程快照
进程top / htop实时监控进程
进程pstree进程树
杀进程kill / killall / pkill终止进程
内存free -h内存使用情况
磁盘df -h各分区空间使用
磁盘du -sh目录大小统计
文件lsof打开的文件/端口

排错常用组合

# 谁占CPU最高
top
 
# 谁占内存最多
ps aux --sort=-%mem | head
 
# 哪个目录最大
du -sh /* | sort -h
 
# 端口被谁占用
lsof -i :8080
ss -tlnp | grep 8080

ps、top、df、du、lsof 是系统监控的五虎将,系统管理必备。


Linux Shell 系统监控 进程 ps top df du lsof 内存 磁盘