
在Linux系统管理中监控和管理进程是最常见的任务之一。ps和top命令是每个运维和开发人员都必须掌握的核心工具。本文将深入讲解这两个命令的用法、常用参数及输出解读帮助你轻松驾驭进程管理。 目录ps命令详解top命令详解ps与top对比总结实战技巧 ps命令详解psprocess status用于显示当前终端或系统中进程的快照信息。它只输出某一时刻的进程状态适合编写脚本或进行一次性查询。基本语法bashps [选项]常用选项分类类型选项说明简单ps显示当前终端进程无参数Unix风格-e、-f、-l需带连字符显示系统所有进程或详细格式BSD风格a、x、u、aux不带连字符更人性化GNU风格--sort、--ppid双连字符支持长选项最常用命令示例1️⃣ps aux– 显示所有进程的详细状态BSD风格bashps aux输出示例textUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 168812 11508 ? Ss 10:30 0:02 /sbin/init www-data 980 0.5 2.3 456712 182000 ? S 10:32 0:12 php-fpmUSER进程所有者%CPUCPU使用率%MEM内存使用率VSZ虚拟内存大小KiBRSS常驻物理内存大小KiBSTAT进程状态R运行、S睡眠、Z僵尸等TIME累计CPU时间COMMAND命令行2️⃣ps -ef– 标准Unix格式输出所有进程bashps -ef输出列UID、PID、PPID、CCPU使用率、STIME、TTY、TIME、CMD适合结合grep查找特定进程如bashps -ef | grep nginx3️⃣ps -eo– 自定义输出格式bashps -eo pid,user,comm,%cpu,%mem --sort-%cpu | head -10输出前10个CPU占用最高的进程。--sort-%cpu表示按CPU降序排列。4️⃣ 显示进程树结构bashps -ejH # 显示PID和PGID树状结构 ps -f --forest # 树形显示父子关系进程状态码STAT速查表状态含义R正在运行或可运行S可中断睡眠等待事件D不可中断睡眠通常为IOZ僵尸进程T停止或追踪高优先级N低优先级s会话领导者前台进程组 top命令详解top是动态实时的进程监视器默认每3秒刷新一次交互式操作强适合实时观察系统负载。启动方式bashtop执行后进入全屏交互界面分为上下两部分统计信息区前5行和进程列表区。统计信息区详解texttop - 14:23:15 up 10 days, 2:34, 3 users, load average: 0.08, 0.03, 0.01 Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.3 us, 0.8 sy, 0.0 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 7825 total, 1234 free, 3456 used, 3135 buff/cache MiB Swap: 2048 total, 2048 free, 0 used. 4012 avail Mem第1行当前时间、系统运行时间、登录用户数、平均负载1/5/15分钟第2行进程总数、运行/睡眠/停止/僵尸数第3行CPU时间分布us用户态占用sy内核态占用ninice调整过的进程id空闲wa等待IOhi/si硬件/软件中断第4/5行物理内存和交换分区使用情况常用交互命令在top运行中键入按键作用1展开或折叠每个CPU核心的使用率P按CPU使用率降序排序大写PM按内存使用率降序排序大写MN按PID排序T按累计CPU时间排序R反向排序k杀死进程输入PID和信号r重新设置进程优先级reniceu只显示指定用户的进程H显示线程而非进程需按H切换q退出d改变刷新间隔秒f选择显示哪些列字段管理o自定义排序字段保存配置与增强版htoptop的配置文件通常为~/.toprc可通过W键保存当前设置。若觉得top不够直观推荐安装htopbashsudo apt install htop # Debian/Ubuntu sudo yum install htop # CentOS/RHELhtop支持鼠标点击、颜色更丰富、操作更友好。⚖️ ps vs top 对比总结特性pstop输出方式一次性快照动态实时刷新交互性无需配合grep/awk处理强大可在线排序/杀进程资源开销极低略高持续刷新适用场景脚本、历史数据分析、简单查询实时监控、故障排查、压力观察典型命令ps aux、ps -eftop、htop️ 实战技巧1. 查找最消耗CPU的进程bashps aux --sort-%cpu | head -5 top -o %CPU # 进入top后按P键效果相同2. 查看特定进程例如MySQL的所有线程bashps -T -p $(pidof mysqld)3. 不进入交互模式指定top刷新次数后退出bashtop -b -n 1 /tmp/top_snapshot.txt # 批处理模式只输出一次4. 用top实时监控指定用户bashtop -u username5. 显示进程的完整命令行含参数bashps -ef | grep java # 只显示部分参数 ps -efww | grep java # -ww 代表无限宽度6. 查看进程打开的端口配合lsofbashps aux | grep nginx | awk {print $2} | xargs lsof -p | grep LISTEN 结语ps和top是Linux进程管理中最基础也最强大的工具。记住想看历史快照用ps想实时监控用top掌握它们再加上一点grep、awk和sort的配合你就能像专家一样轻松剖析系统的运行状态。希望这篇文章能帮助你写出更高效的脚本排查更复杂的线上问题。如果你有更多实战经验或疑问欢迎在评论区留言交流