如何查看Linux运行进程 ps命令输出字段解析

发布时间 - 2025-08-24 00:00:00    点击率:

ps命令是linux中查看进程状态的核心工具,使用ps aux或ps -ef可列出系统所有进程;其中ps aux输出字段包括:1. user(进程所属用户)2. pid(进程id)3. %cpu(cpu使用率)4. %mem(内存使用率)5. vsz(虚拟内存大小)6. rss(常驻内存集)7. tty(控制终端)8. stat(进程状态,如r运行、s睡眠、d不可中断、z僵尸等)9. start(启动时间)10. time(累计cpu时间)11. command(启动命令);而ps -ef字段为:1. uid(用户id)2. pid(进程id)3. ppid(父进程id)4. c(cpu使用率)5. stime(启动时间)6. tty(终端)7. time(cpu时间)8. cmd(命令);常用技巧包括通过grep过滤指定用户或进程、使用--sort按%mem或%cpu排序前10进程、通过ps auxf或ps -ef --forest显示进程树结构,掌握这些字段和用法有助于快速诊断系统性能问题,并在脚本中高效使用ps工具完成自动化监控任务。

在 Linux 系统中,

ps
命令是查看当前运行进程状态最常用的工具之一。它能显示系统中正在运行的进程信息,帮助我们诊断问题、监控资源使用情况。但
ps
输出的字段含义如果不了解,看起来会比较混乱。本文将介绍如何使用
ps
查看进程,并详细解析其常见输出字段的含义。


一、常用 ps 命令查看运行进程

最常用的查看进程方式是使用以下命令:

ps aux

或者使用 POSIX 标准格式:

ps -ef

这两个命令都能列出系统中几乎所有进程,但输出字段略有不同。

  • ps aux
    :BSD 风格语法,更直观,常用于日常使用。
  • ps -ef
    :System V 风格语法,字段对齐更规整,适合脚本处理。

我们以

ps aux
为例进行字段解析。


二、ps aux 输出字段详解

执行

ps aux
后,输出类似如下内容:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.3 169400 13088 ?        Ss   10:00   0:02 /sbin/init
john       523  0.2  1.1 556780 45236 ?        Sl   10:02   0:15 /usr/bin/gnome-shell
www-data  1234  1.5  2.3 245678 95432 ?        S    10:10   1:23 /usr/sbin/apache2

下面是每一列的含义:

1. USER:进程所属用户

表示运行该进程的用户名。如果是系统进程,通常是

root
或服务专用用户(如
www-data
mysql
)。

2. PID:进程 ID

进程的唯一标识号(Process ID),每个进程都有一个唯一的 PID。它是操作系统管理进程的基础,可用于

kill
top
等操作。

3. %CPU:CPU 使用率

进程自启动以来占用的 CPU 时间百分比。注意:这个值是过去一段时间的平均值,不是实时值。高 %CPU 可能表示进程正在密集计算。

4. %MEM:内存使用率

进程占用的物理内存(RSS)占系统总内存的百分比。可用于判断哪个进程占用了较多内存。

5. VSZ:虚拟内存大小(Virtual Memory Size)

进程使用的虚拟内存总量,单位是 KiB。包括代码、数据、共享库以及被换出到磁盘的部分。

6. RSS:常驻内存集(Resident Set Size)

进程当前在物理内存中占用的实际内存大小,单位也是 KiB。不包括被交换出去的部分。RSS 越大,说明该进程吃内存越多。

⚠️ 注意:RSS 不等于实际物理独占内存,因为共享库等部分是多个进程共用的。

7. TTY:控制终端

进程关联的终端设备。如果是

?
表示没有控制终端(如后台服务、守护进程);如果是
pts/0
tty1
等,表示是从某个终端启动的。

8. STAT:进程状态

表示进程当前的状态,常用状态码如下:

  • R
    :运行中(running)或可运行(等待 CPU)
  • S
    :睡眠中(interruptible sleep),可被信号唤醒
  • D
    :不可中断睡眠(通常在等待 I/O)
  • T
    :停止(stopped),如被
    kill -STOP
    或调试器暂停
  • Z
    :僵尸进程(zombie),已终止但父进程未回收
  • S
    :该进程是会话领导者(session leader)
  • +
    :前台进程组中的进程
  • l
    :多线程进程(有多个轻量级进程)

例如:

Sl
表示睡眠中且是多线程;
Ss
表示睡眠中且是会话领导者。

9. START:进程启动时间

进程的启动时间。如果是今天启动的,只显示时分(如

10:02
);如果是前几天,会显示月日(如
Jan05
)。

10. TIME:累计 CPU 时间

进程自启动以来,已使用的 CPU 时间总和(不是运行时长),格式为

分钟:秒
小时:分钟:秒
。例如
1:23
表示用了 1 分 23 秒的 CPU 时间。

11. COMMAND:启动命令

启动该进程的命令行,可能只显示命令名,也可能显示完整路径和参数。某些情况下会被截断。


三、ps -ef 输出字段对比

ps -ef
的输出格式略有不同:

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 10:00 ?        00:00:02 /sbin/init
john       523   500  0 10:02 ?        00:00:15 /usr/bin/gnome-shell

字段解释:

  • UID:用户 ID(与 USER 类似)
  • PID:进程 ID
  • PPID:父进程 ID(Parent PID),非常重要,用于查看进程树结构
  • C:CPU 使用率(旧格式,类似 %CPU)
  • STIME:启动时间(小时:分钟 或 月日)
  • TTY:控制终端
  • TIME:CPU 使用时间
  • CMD:启动命令

相比

ps aux
ps -ef
多了 PPID,更适合分析父子进程关系。


四、实用技巧

  • 查看某个用户的进程:

    ps aux | grep 用户名
  • 查看特定进程(如 nginx):

    ps aux | grep nginx
  • 按内存使用排序:

    ps aux --sort=-%mem | head -10
  • 按 CPU 使用排序:

    ps aux --sort=-%cpu | head -10
  • 显示进程树结构:

    ps auxf

    ps -ef --forest

基本上就这些。掌握

ps
的输出字段,能快速定位系统负载高、内存占用大等问题的来源。虽然
top
htop
更直观,但
ps
是脚本和自动化中不可或缺的工具,理解其字段含义非常实用。


# mysql  # linux  # apache  # nginx  # 操作系统  # 工具  # 内存占用  # sort  # Session  # 线程  # 多线程  # 自动化  # 多个  # 用了  # 只显示  # 最常用  # 月日  # 都有  # 可用于  # 都能  # 终端设备 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用VPS主机快速搭建个人网站?  JS中对数组元素进行增删改移的方法总结  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  SQL查询语句优化的实用方法总结  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  详解Android中Activity的四大启动模式实验简述  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何处理表单验证?(Requests代码示例)  Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  php打包exe后无法访问网络共享_共享权限设置方法【教程】  微信公众帐号开发教程之图文消息全攻略  如何快速生成凡客建站的专业级图册?  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  Laravel如何使用Livewire构建动态组件?(入门代码)  QQ浏览器网页版登录入口 个人中心在线进入  如何构建满足综合性能需求的优质建站方案?  如何在云服务器上快速搭建个人网站?  Android okhttputils现在进度显示实例代码  如何快速上传建站程序避免常见错误?  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何在橙子建站上传落地页?操作指南详解  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Laravel模型事件有哪些_Laravel Model Event生命周期详解  如何使用 jQuery 正确渲染 Instagram 风格的标签列表  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道  微信小程序 canvas开发实例及注意事项  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  Thinkphp 中 distinct 的用法解析  如何在万网利用已有域名快速建站?  网易LOFTER官网链接 老福特网页版登录地址  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  香港服务器选型指南:免备案配置与高效建站方案解析  零服务器AI建站解决方案:快速部署与云端平台低成本实践  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Python进程池调度策略_任务分发说明【指导】  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Laravel如何使用Vite进行前端资源打包?(配置示例)  Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  如何快速搭建二级域名独立网站?  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  如何在建站主机中优化服务器配置?  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  Laravel如何发送系统通知?(Notification渠道示例)