Linux研学-资源监控

一 进程基础

1 介绍

  进程是操作系统中程序的一次动态执行实例。运行一个程序(如浏览器、文本编辑器)时,操作系统会为其创建一个进程,并分配资源(如内存、CPU时间等)以支持其运行。
  每个进程都是独立的,拥有自己的地址空间、数据、代码和系统资源,确保不同进程之间不会直接干扰。

2 ps 命令 – 查看进程

  ① 语法

# -e	显示所有进程(包括其他用户的进程)。
# -f	以完整格式显示信息(包含UID、PPID等)。
ps -ef  # 显示所有进程的完整信息(最常用)
ps aux  # 显示更详细的进程信息(BSD风格,兼容性更好)

  ② 例子

ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 15:10 ?        00:00:00 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
root          2      0  0 15:10 ?        00:00:00 [kthreadd]
字段说明
UID进程所属用户(如 root)。
PID进程ID(唯一标识符)。
PPID父进程ID(启动该进程的进程ID)。
CCPU占用率(百分比,部分系统可能不显示)。
STIME进程启动时间(格式为 HH:MM 或 月/日/年)。
TTY启动进程的终端:?:非终端启动(如系统服务)。pts/0:远程终端。tty1:本地虚拟终端。
TIME进程占用CPU的总时间(格式 HH:MM:SS)。
CMD进程的完整命令或路径(方括号 [] 表示内核线程)。
ps aug
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        632  0.0  0.0 110044   828 tty1     Ss+  15:10   0:00 /sbin/agetty --noclear tty1 linux
root        921  0.0  0.1 115524  2072 pts/0    Ss   15:10   0:00 -bash
字段说明
%CPU:CPU占用率。
%MEM:内存占用率。
VSZ:虚拟内存大小(KB)。
RSS:实际内存占用(KB)。
STAT:进程状态(如 S=休眠,R=运行,Z=僵尸进程)。
# 通过管道符过滤 获取信息
ps -ef | grep nginx
root        945    921  0 15:20 pts/0    00:00:00 grep --color=auto nginx

3 kill 命令 – 关闭进程

  ① 语法

# -9 强制立即终止进程
kill -9 Pid

  ② 例子

# 1. 启动tail命令
[root@localhost ~]# tail

# 2. 另一个窗口查询tail命令Pid
[root@localhost ~]# ps aux | grep tail
root        949  0.0  0.0 107940   656 pts/0    S+   15:27   0:00 tail
root        990  0.0  0.0 112660   968 pts/1    R+   15:28   0:00 grep --color=auto tail

# 3. 关闭
[root@localhost ~]# kill -9 949

# 4. tail命令窗口
[root@localhost ~]# tail
Killed

# 5. 查询
[root@localhost ~]# ps aux | grep tail
root        993  0.0  0.0 112660   972 pts/1    R+   15:30   0:00 grep --color=auto tail

二 资源监控

1 top 命令 – 查看系统整体资源占用情况

  ① 语法

# 设置刷新间隔为5秒 也可以直接top启动
# 退出命令:按 q 或 Ctrl+C。
top -d 5
选项功能说明典型使用场景示例命令
-p <PID>仅监控指定进程(可多进程,用逗号分隔)排查特定进程(如高CPU占用的nginx或数据库进程)top -p 1234,5678
-d <秒>设置刷新间隔(默认5秒,支持小数如0.5实时性要求高的场景(如监控突发流量时的CPU峰值)top -d 1(每秒刷新)
-c显示完整命令路径(默认仅显示进程名)区分同名进程(如多个python脚本)或查看启动参数top -c 或交互模式下按 c
-n <次数>指定刷新次数后退出(常用于脚本自动化)定时抓取系统状态快照(如巡检脚本记录3次负载)top -n 3(刷新3次后退出)
-b批处理模式(非交互式,可重定向到文件)生成日志或与其他工具集成(如crontab定时任务)top -b -n 3 > /tmp/top.log
-u <用户>仅显示指定用户的进程审计用户资源使用(如检查mysql用户是否有异常进程)top -u mysql
-i忽略闲置(Idle)和僵尸(Zombie)进程聚焦活跃进程(如排查负载高时排除无害僵尸进程)top -i
-H显示线程而非进程(需交互模式或-p指定进程)分析多线程应用(如Java/Tomcat的线程级CPU占用)top -H -p 1234(查看进程1234的线程)

  ② 例子

top
top - 15:36:15 up 26 min,  1 user,  load average: 0.00, 0.00, 0.00
Tasks:  83 total,   1 running,  82 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2031888 total,  1540984 free,   270304 used,   220600 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  1585416 avail Mem 
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND 

  ③ 顶部汇总信息分析

# 第1行:系统运行状态
top - 15:36:15 up 26 min,  1 user,  load average: 0.00, 0.00, 0.00
# 程序名称 启动时间 系统运行时间 几个登录用户 负载均衡(1分钟 5分钟 15分钟)若值为1表示有1颗CPU百分百繁忙了
# 第2行:任务(进程)状态
Tasks:  83 total,   1 running,  82 sleeping,   0 stopped,   0 zombie
# 总进程数83个 正在运行进程1个 睡眠进程82个 停止进程0个 僵尸进程0个
# 第3行:CPU占用率
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
# cpu用户使用率 系统使用率 高优先级进程使用率 CPU空闲率 IO等待占用率 CPU硬件中断率 CPU软件中断率 强制等待的CPU占用率
# 第4行:物理内存(RAM)
KiB Mem :  2031888 total,  1540984 free,   270304 used,   220600 buff/cache
# 内存总量 空闲内存量 使用内存量 缓存
# 第5行:虚拟内存 交换分区(Swap)
KiB Swap:  2097148 total,  2097148 free,        0 used.  1585416 avail Mem 
# 与物理内存相同
# 第6行:表头
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND 
列名全称/说明示例值作用
PIDProcess ID(进程ID)1234唯一标识进程的数字,用于管理进程(如kill 1234)。
USER运行进程的用户root显示进程所有者,排查权限问题(如非root用户启动了高权限服务)。
PRPriority(优先级)20进程的静态优先级(值越小优先级越高,范围通常为0-139)。
NINice Value(优先级调整值)0用户可调整的优先级(-20到19,值越小优先级越高)。NI会直接影响PR值。
VIRTVirtual Memory(虚拟内存)500m进程占用的全部虚拟地址空间(包括共享库、未使用的内存等),可能远大于实际使用量。
RESResident Memory(常驻内存)120m进程实际使用的物理内存(不含交换分区),是衡量内存占用的关键指标。
SHRShared Memory(共享内存)30m进程与其他进程共享的内存(如共享库),RES包含SHR部分。
SProcess State(进程状态)S常见状态:
- R:运行中(Running)
- S:可中断睡眠(Sleeping)
- D:不可中断睡眠(通常与IO相关)
- Z:僵尸进程(需清理)
- T:暂停(Stopped)
%CPUCPU使用率15.3进程在最近采样周期内占用的CPU百分比(多核可能超过100%)。
%MEM内存使用率6.0进程占用的物理内存(RES)占总内存的百分比。
TIME+CPU时间0:15.30进程实际使用CPU的总时间(格式:分钟:秒.毫秒)。
COMMAND命令名/进程名nginx启动进程的命令或程序名(可能被截断,按c键可显示完整路径)。

  ④ 交互模式快捷键:在运行top后,按下以下键可动态调整显示:

分类按键功能说明适用场景等效命令行参数
基础操作h显示帮助画面查阅按键功能或忘记快捷键时-
q退出 top结束监控返回终端-
Enter立即刷新显示(跳过刷新间隔)强制更新数据(如突发性能问题时)-
排序控制PCPU使用率 排序(默认)定位高CPU占用进程(如死循环、计算任务)-
M驻留内存(RES) 排序发现内存泄漏或占用过高进程(如Java应用)-
T累计CPU时间(TIME+) 排序分析长时间运行进程(如卡死服务)-
NPID号 排序按启动顺序查看进程(新进程PID更大)-
R优先级(PR/NI) 排序调整进程调度优先级(需配合r键修改nice值)-
过滤显示i隐藏闲置/僵尸进程(仅显示活跃进程)聚焦关键进程,排除干扰(如系统空闲时大量S状态进程)-i
f自定义显示列(字段选择器)隐藏无关字段(如PID),聚焦COMMAND%CPU-
u仅显示指定用户的进程(输入用户名过滤)审计用户资源使用(如检查mysql用户进程)-u <用户>
k终止指定PID的进程(输入PID和信号)强制终止失控进程(默认SIGTERM,强制用SIGKILL-
内存显示E切换顶部内存汇总单位(KiB/MiB/GiB/TiB)适应不同规模系统(如从KiB切换到GiB避免数值滚动)-
e切换进程内存列单位(RES/SHR等)快速对比进程内存占用(如从1024m切换为1.0g-
CPU信息t切换CPU状态行显示(用户/系统/空闲等百分比)显示/隐藏CPU使用率摘要-
1展开多核CPU详情(显示每个逻辑核心使用率)诊断负载不均衡问题(如单核满载)-
H显示线程而非进程(需配合-p或全局)分析多线程应用(如Tomcat线程池阻塞)-
高级功能W保存当前配置到 ~/.toprc永久自定义默认显示列和排序规则(下次启动自动加载)-
r修改进程的nice值(调整优先级)优化后台任务资源分配(如降低非关键进程优先级)-
c显示进程的完整命令路径(包括参数)区分同名进程(如多个python脚本)或查看启动参数-c

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

  ① 语法

 # 指定文件/目录时显示其所在分区的信息
df -h [文件或目录]

  ② 例子

# 文件系统        容量  已用  可用 已用% 挂载点
df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root   17G   12G  5.4G  69% /
devtmpfs                 982M     0  982M   0% /dev
tmpfs                    993M     0  993M   0% /dev/shm
tmpfs                    993M  8.5M  984M   1% /run
tmpfs                    993M     0  993M   0% /sys/fs/cgroup
/dev/sda1               1014M  125M  890M  13% /boot
tmpfs                    199M     0  199M   0% /run/user/0

3 iostat 命令 – 监控系统CPU利用率和磁盘I/O统计信息

  ① 语法

# CentOS/RHEL 安装
yum install sysstat -y

# 启用服务(部分系统需手动启动)
systemctl enable --now sysstat
iostat [选项] [间隔时间] [刷新次数]

  ② 例子

# 每2秒刷新一次,共刷新5次,显示扩展信息 iostat -x 2 5
iostat
# CPU
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.10    0.01    0.00   99.87
# 当前虚拟机硬盘 每秒传输次数 每秒读取数据量 每秒写入数据量 累计读取数据量 累计写入数据量(自系统启动以来)
Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.21        31.66         5.93     280176      52499

4 sar 命令 – 查看网络状态

  ① 语法

# -n DEV:显示网络接口吞吐量(接收/发送速率)每1秒采样1次,共3次,显示网卡流量
sar -n DEV 1 3  

  ② 例子

# 主要关注rxpck/s	每秒接收的数据包数	txpck/s	每秒发送的数据包数
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     07/08/2025      _x86_64_        (1 CPU)
09:00:01 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
09:10:01 AM       lo      0.10      0.10       0.01       0.01      0.00      0.00      0.00
09:10:01 AM     ens33     15.20      8.30      12.50       1.20      0.00      0.00      0.00
09:10:01 AM    virbr0      0.00      0.00       0.00       0.00      0.00      0.00      0.00
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泰勒疯狂展开

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值