登录
首页 >  文章 >  linux

Linux ps命令查看进程详解

时间:2026-05-14 09:04:18 474浏览 收藏

本文深入解析Linux中ps命令的核心用法与实战技巧,揭示为何默认ps只显示当前终端进程、如何通过-e或-A参数避免遗漏90%的关键进程,并清晰对比ps -ef(System V风格,CMD完整但无资源占比)与ps aux(BSD风格,含%CPU/%MEM但COMMAND易截断)的本质差异;同时提供精准定位PID的高效方法——从grep模糊匹配到pgrep替代、-C精确匹配、--ppid查子进程,再到-o定制输出规避误操作;最后提炼出PID、PPID、STAT等真正高频实用的字段含义,助你快速识别运行状态、排查僵尸进程、理清服务依赖关系,让进程管理从“看天吃饭”变为精准掌控。

Linux如何使用ps查看进程_Linux ps查看进程指南

ps 默认只显示当前终端的进程,想看全系统进程必须加 -e-A 参数,否则你会漏掉 90% 的关键进程。

ps -ef 和 ps aux 的区别到底在哪

这两个是最常用但最容易混淆的组合:

  • ps -ef 是 System V 风格,输出字段固定:UID、PID、PPID、C、STIME、TTY、TIME、CMD;CMD 列不截断,适合看完整命令行,但不显示 CPU/内存百分比
  • ps aux 是 BSD 风格,u 表示用户视角,x 包含无终端的进程(如守护进程),字段含 %CPU%MEMVSZRSS;但 COMMAND 列默认截断,长命令会显示不全
  • 两者都支持管道过滤,比如 ps aux | grep nginx,但注意 grep 自身也会出现在结果里,可用 ps aux | grep [n]ginx 规避

如何精准定位某个进程的 PID

靠肉眼翻页找 PID 效率极低,直接用 pgrep 更可靠,但 ps 也能做到:

  • 按进程名模糊匹配:ps -ef | grep "python.*data" —— 注意用引号包裹含空格或特殊字符的模式
  • 只输出 PID 列:ps -C nginx -o pid=-C 精确匹配可执行名,-o pid= 去掉表头)
  • 查子进程:ps --ppid 1234(1234 是父进程 PID),比 ps -ef | awk '$3==1234' 更简洁安全
  • 避免误杀:ps -o pid,comm,args -C java 同时看 PID、二进制名和完整参数,确认是不是你要的那个 Java 进程

ps 输出字段中哪些真正有用

新手常被一堆缩写搞晕,实际高频关注的就这几个:

  • PID:进程 ID,杀进程前必核对
  • PPID:父进程 ID,排查孤儿进程或服务启动链时关键
  • STAT:状态码,R(运行中)、S(休眠)、Z(僵尸)必须立刻识别; 表示高优先级,N 表示低优先级
  • TIME:CPU 使用总时间(非百分比),判断是否长期霸占 CPU 很有效
  • TTY:关联终端,? 表示无终端(典型后台服务),pts/0 表示某次 SSH 登录

别迷信 ps 的实时性——它只是一次快照,进程可能在你敲完命令前就结束了;需要持续观察用 tophtop,要分析历史资源占用得靠 /proc/[pid]/statpidstat。另外,容器环境里 ps 显示的是宿主机视角,进容器后看到的 PID 可能和宿主机不一致,这点很容易被忽略。

今天带大家了解了的相关知识,希望对你有所帮助;关于文章的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>