D4 Linux 进程 内存 等命令

D4
  1. 知识点:进程管理,ps、top、htop;kill、pkill;CPU、内存指标识别

  2. 实操:查看所有进程,找出CPU占用最高的进程,模拟杀掉后台进程

  3. 面试题:服务器CPU使用率100%,你怎么排查? 标准答案:先用top定位占用最高的进程PID,查看进程是业务程序还是异常进程,查看程序日志分析死循环、频繁GC等原因。

一、进程基础概念

1.进程定义:操作系统资源分配最小位,拥有独立内存、CPU、文件描述符;线程是调度单位,一个进程可包含多个线程

2.进程状态:

  • R:运行态,正在CPU执行/等待CPU调度
  • S:可中断休眠,等待资源(IO、信号),可被信号唤醒
  • D:不可中断休眠,磁盘IO 阻塞,kill无法杀死
  • Z:僵尸进程,子进程结束父进程未回收,占用PID
  • T:停止态,被Ctrl+z暂停或收到stop信号

3.PID/PPID:进程ID、父进程ID;init/systemd(POID=1)系统一号进程,所有进程祖先

4.前台进程/后台进程

  • 前台:占用中断,Ctrl+c终止
  • 后台:&启动,脱离终端输入,输出仍打印;nohup/screen实现持久后台

5.进程优先级:nice值(-20~19,越小优先级越高),top可查看NI列

二、进程查看工具:ps、top、htop

1.ps静态进程快照(一次性查看)

基础参数

  • ps aux : 展示所有用户全部进程

字段解析

USER :运行用户

PID :进程号

%CPU:CPU占比

%MEM:内存占比

VSZ:虚拟内存

RSS:物理内存

TTY:中断

STAT:进程状态

START:启动时间

TIME:累计CPU运行时间

COMMAND:启动命令

  • ps -ef : 全格式进程树,带PPID 父进程ID
  • ps aux --sort=-%cpu:按CPU占用降序排序,快速找高负载进程
  • ps aux --sort=-%mem:按内存占用降序

拓展过滤用法

  • ps aux |grep 进程名
  • pgrep 进程名:只输出对应PID,配合kill使用
  • ps -T -p PID :查看进程内所有线程(排查多线程CPU爆满)

2.top动态实时监控(系统自带,无需安装)

顶部系统全局指标(CPU / 内存核心识别,重点)

  • 第一行:运行时长,系统负载

load avera:0.00,0.02,0.02 ---- 1/5/15分钟平均活跃进程数

判定:CPU核心数N , 负载持续 > N 代表CPU瓶颈

  • 第二行:进程总览

进程总数、运行、休眠、僵尸、停止进程数量

  • CPU分区(关键排障指标)
    • us: 用户程序CPU占用(业务代码、应用程序,100%瓶颈多在此)
    • sy: 内核态CPU占用(磁盘IO、系统调用、内核异常)
    • id:空闲CPU,id接近0代表CPU打满
    • wa:IO等待CPU,wa高说明磁盘读写瓶颈,不是程序CPU问题
    • hi/si/st:硬中断、软中断、虚拟机偷取时间
  • 第四、五行内存指标
    • 物理内存: 总 , 空闲 , 已使用 ,缓存/缓冲区
    • 拓展:Linux缓存机制,buff/cache会占用大量内存属于正常,可用内存=free+buff/cache
    • Swap:交换分区,swap频繁使用代表物理内存不足,会严重卡顿

进程交互快捷键

  • P :按CPU占用排序;
  • M:按内存占用排序
  • k:输入PID,发送信号杀死进程
  • 1:展开多核CPU,查看单个核心占用
  • z:高亮显示,区分高负载进程
  • q:退出top

3.htop增强版top(需安装)

  • 彩色界面、鼠标操作、进程树展示
  • F5:显示父子进程树,快速定位僵尸进程、多线程程序
  • F9:可视化选择kill信号,无需记信号编号
  • 自带筛选、搜索,直接点击列排序,多核CPU分栏展示

三、进程终止工具:kill、pkill、killall

1.kill原理:发送信号给进程,进程收到信号自主推出(不是强制销毁)

常用信号(拓展)

  • kill -15 PID 默认SIGTERM,优雅终止,允许程序保存日志、释放链接(推荐优先使用)
  • kill -9 PID SIGKILL,强制杀死,无法拦截;丢失缓存数据、数据库连接、文件损坏风险,仅15无效时使用
  • kill -2 PID 等价Ctrl+c,中断前台进程
  • kill -1 PID SIGHUP,重新配置(nginx、java服务常用)

2.pkill:按进程名批量杀进程,无需PID

  • pkill java 杀死所有Java进程
  • pkill -f "python test.py" 匹配完整命令行进程

3.killall:同pkill,按程序名批量终止

4.拓展:nohup后台进程、&后台运行、jobs查看后台任务、fg/bg切换前后台

四、CPU、内存核心指标识别(排障核心)

1.CPU异常指标识别

  • us高:业务代码问题(死循环、无限递归、频繁计算、java频繁FullGC)
  • sy高:大量系统调用、磁盘频繁读写、内核bug、大量创建销毁进程
  • wa高:IO瓶颈(磁盘慢、大量读写日志、数据库慢查询)
  • load持续大于CPU核心数:CPU资源耗尽,请求排队阻塞
  • 单核心100%,多核空闲:单线程程序死循环(程序未做并发)

2.内存异常指标识别

  • used持续上涨,free持续下降:内存泄偶(程序未释放堆内存、缓存无过期清理)
  • Swap频繁使用:物理内存不足,系统频繁交换磁盘,性能暴跌
  • OOM killer:内存耗尽,系统自动杀死占用内存最高进程,查看日志/var/log/messages
相关推荐
在线OJ的阿川1 小时前
仿muduo库实现高并发服务器
linux·服务器·c++
番茄育学园1 小时前
2026表格自动化工具实测:四个不同方案,适配不同办公场景
运维·自动化
j7~2 小时前
【Linux 系统】二十.进程间通信(共享内存、消息队列、信号量)
linux·运维·消息队列·共享内存·信号量·system v
YMWM_2 小时前
python-venv虚拟环境
linux·开发语言·python
电商API_180079052472 小时前
电商ERP 自动同步订单功能实现拆解与技术手段
服务器·前端·网络·爬虫
万俟淋曦2 小时前
【ROS2】动作通信机制 Action 代码示例(C++版)
linux·人工智能·机器人
Web极客码2 小时前
如何在WordPress中通知用户他们的评论已获批准?
服务器·wordpress·评论
山峰哥2 小时前
‌Explain实战:打开数据库执行计划的黑盒‌
大数据·服务器·数据库·sql·深度优先·宽度优先
灵机一物2 小时前
2026算力推荐进入专业化阶段:超互联品牌如何构建企业AI选型能力矩阵
服务器·人工智能·决策树·云平台