D4知识点进程管理ps、top、htopkill、pkillCPU、内存指标识别实操查看所有进程找出CPU占用最高的进程模拟杀掉后台进程面试题服务器CPU使用率100%你怎么排查 标准答案先用top定位占用最高的进程PID查看进程是业务程序还是异常进程查看程序日志分析死循环、频繁GC等原因。一、进程基础概念1.进程定义操作系统资源分配最小位拥有独立内存、CPU、文件描述符线程是调度单位一个进程可包含多个线程2.进程状态R运行态正在CPU执行/等待CPU调度S可中断休眠等待资源IO、信号可被信号唤醒D不可中断休眠磁盘IO 阻塞kill无法杀死Z僵尸进程子进程结束父进程未回收占用PIDT停止态被Ctrlz暂停或收到stop信号3.PID/PPID进程ID、父进程IDinit/systemdPOID1系统一号进程所有进程祖先4.前台进程/后台进程前台占用中断Ctrlc终止后台启动脱离终端输入输出仍打印nohup/screen实现持久后台5.进程优先级nice值-20~19越小优先级越高top可查看NI列二、进程查看工具ps、top、htop1.ps静态进程快照一次性查看基础参数ps aux 展示所有用户全部进程字段解析USER 运行用户PID 进程号%CPUCPU占比%MEM内存占比VSZ虚拟内存RSS物理内存TTY中断STAT进程状态START启动时间TIME累计CPU运行时间COMMAND启动命令ps -ef 全格式进程树带PPID 父进程IDps aux --sort-%cpu按CPU占用降序排序快速找高负载进程ps aux --sort-%mem按内存占用降序拓展过滤用法ps aux |grep 进程名pgrep 进程名只输出对应PID配合kill使用ps -T -p PID 查看进程内所有线程排查多线程CPU爆满2.top动态实时监控系统自带无需安装顶部系统全局指标CPU / 内存核心识别重点第一行运行时长系统负载load avera0.000.020.02 ---- 1/5/15分钟平均活跃进程数判定CPU核心数N 负载持续 N 代表CPU瓶颈第二行进程总览进程总数、运行、休眠、僵尸、停止进程数量CPU分区关键排障指标us 用户程序CPU占用业务代码、应用程序100%瓶颈多在此sy 内核态CPU占用磁盘IO、系统调用、内核异常id空闲CPUid接近0代表CPU打满waIO等待CPUwa高说明磁盘读写瓶颈不是程序CPU问题hi/si/st硬中断、软中断、虚拟机偷取时间第四、五行内存指标物理内存 总 空闲 已使用 缓存/缓冲区拓展Linux缓存机制buff/cache会占用大量内存属于正常可用内存freebuff/cacheSwap交换分区swap频繁使用代表物理内存不足会严重卡顿进程交互快捷键P 按CPU占用排序M按内存占用排序k输入PID,发送信号杀死进程1展开多核CPU查看单个核心占用z高亮显示区分高负载进程q退出top3.htop增强版top需安装彩色界面、鼠标操作、进程树展示F5显示父子进程树快速定位僵尸进程、多线程程序F9可视化选择kill信号无需记信号编号自带筛选、搜索直接点击列排序多核CPU分栏展示三、进程终止工具kill、pkill、killall1.kill原理发送信号给进程进程收到信号自主推出不是强制销毁常用信号拓展kill -15 PID 默认SIGTERM优雅终止允许程序保存日志、释放链接推荐优先使用kill -9 PID SIGKILL强制杀死无法拦截丢失缓存数据、数据库连接、文件损坏风险仅15无效时使用kill -2 PID 等价Ctrlc中断前台进程kill -1 PID SIGHUP重新配置nginx、java服务常用2.pkill按进程名批量杀进程无需PIDpkill java 杀死所有Java进程pkill -f “python test.py” 匹配完整命令行进程3.killall同pkill按程序名批量终止4.拓展nohup后台进程、后台运行、jobs查看后台任务、fg/bg切换前后台四、CPU、内存核心指标识别排障核心1.CPU异常指标识别us高业务代码问题死循环、无限递归、频繁计算、java频繁FullGCsy高大量系统调用、磁盘频繁读写、内核bug、大量创建销毁进程wa高IO瓶颈磁盘慢、大量读写日志、数据库慢查询load持续大于CPU核心数CPU资源耗尽请求排队阻塞单核心100%多核空闲单线程程序死循环程序未做并发2.内存异常指标识别used持续上涨free持续下降内存泄偶程序未释放堆内存、缓存无过期清理Swap频繁使用物理内存不足系统频繁交换磁盘性能暴跌OOM killer内存耗尽系统自动杀死占用内存最高进程查看日志/var/log/messages