如何在Linux中查看运行进程 Linux ps aux命令详解

发布时间 - 2025-08-30 00:00:00    点击率:
ps aux命令用于查看Linux系统中所有进程的详细信息,包括用户、PID、CPU和内存占用、进程状态等,结合grep、sort、less等命令可高效筛选和分析进程,帮助识别高资源占用或僵尸进程,并通过kill命令终止异常进程。

在Linux系统里,想了解当前有哪些程序在跑,它们占用了多少资源,或者哪个进程出了问题,最直接也是最常用的方法就是使用

ps aux
命令。它能给你一个系统进程的快照,让你对系统内部的活动一目了然。

ps aux
这个命令,说白了,就是
ps
(process status)命令加上几个参数的组合。

  • a
    :显示所有用户的进程,不仅仅是你自己的。这很重要,因为很多系统服务都是以其他用户身份运行的。
  • u
    :以用户为导向的格式显示进程信息。这意味着你会看到用户、CPU使用率、内存使用率等更详细的信息,而不是仅仅是进程ID。
  • x
    :显示没有控制终端的进程。这类进程通常是系统后台服务,如果你不加
    x
    ,很多重要的后台服务你可能就看不到了。

所以,当你敲下

ps aux
并回车时,你看到的就是一个包含系统上所有(或者说绝大部分)正在运行的进程的详细列表。我个人觉得,这就像是给你的Linux系统拍了一张“全家福”,每个成员的身份、状态、消耗都写得清清楚楚。

ps aux
命令的输出字段都代表什么?

初次看到

ps aux
的输出,密密麻麻的字段可能会让人有点懵。但别担心,理解它们其实不难,而且对系统诊断非常有帮助。我来简单拆解一下那些核心字段:

  • USER:进程的所有者。通常是运行该程序的用户,或者像
    root
    daemon
    www-data
    这样的系统用户。这个字段能帮你快速判断一个进程是谁启动的。
  • PID:进程ID。每个运行的进程都有一个唯一的数字ID。这是你对进程进行操作(比如终止它)时最关键的标识符。
  • %CPU:进程占用的CPU百分比。这个值高,意味着这个进程正在大量消耗CPU资源。如果你发现某个进程的%CPU持续很高,那可能就是它导致系统卡顿的元凶。
  • %MEM:进程占用的物理内存百分比。和CPU类似,高百分比可能意味着内存泄漏或者程序设计不合理。
  • VSZ (Virtual Size):进程占用的虚拟内存大小,以KB为单位。这包括了程序代码、数据、共享库等等。它代表了进程理论上可能使用的内存量。
  • RSS (Resident Set Size):进程实际占用的物理内存大小,以KB为单位。这个值通常比VSZ小,因为它只计算了进程当前在RAM中的部分。我个人更关注RSS,因为它更能反映进程对实际物理内存的压力。
  • TTY:控制终端。如果进程是从终端启动的,这里会显示对应的终端名(如
    pts/0
    )。如果是后台服务,通常会显示
    ?
  • STAT:进程状态。这是一个非常重要的字段,用一个或几个字母表示进程的当前状态,比如:
    • R
      (Running): 正在运行或在运行队列中等待。
    • S
      (Sleeping): 正在休眠,等待某个事件发生(如I/O完成)。
    • D
      (Uninterruptible Sleep): 不可中断的休眠,通常在等待I/O,此时不能被信号中断。遇到这种进程,通常意味着I/O系统出了问题。
    • Z
      (Zombie): 僵尸进程。进程已经终止,但其父进程还没有回收它的资源。这通常不是大问题,但大量僵尸进程可能预示着父进程有问题。
    • T
      (Stopped): 进程被停止(例如,通过
      Ctrl+Z
      )。
    • S
      :会话领导者。
    • l
      :多线程进程。
    • +
      :前台进程组。
  • START:进程启动时间。
  • TIME:进程累计占用的CPU时间。这个时间是CPU时间,不是墙钟时间,所以即使一个进程运行了很久,如果它大部分时间都在休眠,这个值也不会很高。
  • COMMAND:启动进程的命令或程序路径。这是你最直观判断进程用途的地方。

理解这些字段,你就能从海量的进程信息中,快速定位到你关心的点,比如哪个程序在吃CPU,哪个服务没启动,或者有没有异常的进程在运行。

如何结合其他命令更有效地分析进程?

ps aux
虽然强大,但单独使用时,面对大量的输出,信息筛选会是个挑战。这时候,Linux的管道(
|
)和一些文本处理工具就显得尤为重要了。我个人在日常工作中,几乎不会单独使用
ps aux
,它总是和其他命令联手出击。

  • 查找特定进程:结合

    grep
    这是最常用的组合。如果你想查找某个特定的服务或应用程序,比如Apache或Nginx,直接用
    grep
    过滤:

    ps aux | grep nginx

    这里有个小技巧,

    grep
    本身也会作为一个进程显示出来,所以你可能会看到两行,一行是
    nginx
    的,一行是
    grep nginx
    的。如果你想精确排除
    grep
    自身,可以这样:

    ps aux | grep [n]ginx

    或者更通用的:

    ps aux | grep 'your_process_name' | grep -v grep

    这样能帮你快速定位到目标进程的PID。

  • 分页查看:结合

    less
    more
    当进程列表太长,一屏显示不完时,
    less
    more
    就派上用场了:

    ps aux | less

    这样你可以上下滚动,慢慢查看。我通常更喜欢

    less
    ,因为它支持向前翻页。

  • 按资源占用排序:结合

    sort
    想知道哪个进程最耗CPU或内存?
    sort
    命令可以帮你:

    ps aux --sort=-%cpu | head -n 10

    这会显示按CPU使用率降序排列的前10个进程(注意

    --sort
    ps
    的参数,不是
    sort
    命令的)。如果你想用
    sort
    命令对
    ps aux
    的输出进行排序,需要知道列的索引,比如按
    %MEM
    排序:

    ps aux | sort -nrk 4 | head -n 10

    这里

    -n
    表示按数值排序,
    -r
    表示反向(降序),
    -k 4
    表示按第四列(%MEM)排序。这有点像玩Excel表格,找到合适的列,然后排序。

  • 动态监控:了解

    top
    htop
    虽然这篇文章主要讲
    ps aux
    ,但我不得不提一下
    top
    htop
    ps aux
    给的是一个快照,而
    top
    htop
    则能提供实时的、动态的进程信息,并且支持交互式操作。如果你需要持续监控系统资源,它们是更好的选择。
    ps aux
    更适合做一次性的诊断或脚本化处理。

通过这些组合,

ps aux
的效能会被大大提升,你就能更高效地进行系统监控和故障排查。

遇到僵尸进程或异常进程该如何处理?

在系统维护中,查看进程的目的往往是为了发现并解决问题。僵尸进程(Zombie Process)和异常高占用资源的进程是两种常见的“麻烦制造者”。

  • 识别和处理僵尸进程 (STAT Z) 僵尸进程,顾名思义,就是已经“死亡”但尸体还在的进程。它们在

    STAT
    列会显示为
    Z
    。一个进程在完成其任务后,会向其父进程发送一个退出状态,然后等待父进程来“收尸”(调用
    wait()
    waitpid()
    函数)。如果父进程没有及时回收,那么这个子进程就会变成僵尸进程。

    ps aux | grep Z

    僵尸进程本身并不占用CPU或内存资源(除了一个PID条目),所以少量僵尸进程通常无害。但如果出现大量僵尸进程,那很可能意味着其父进程存在bug,没有正确处理子进程的退出。 处理方法: 僵尸进程无法直接被

    kill
    。因为它们已经死了,只是信息还在。你需要做的是终止它们的父进程。你可以通过
    pstree -p
    或者
    ps -o ppid,pid,command | grep 
    来找到僵尸进程的父进程(PPID),然后
    kill
    掉父进程。父进程终止后,这些僵尸进程通常会被
    init
    进程(PID 1)收养并清理。如果父进程是关键服务,你需要谨慎操作,可能需要重启服务甚至整个系统。

  • 识别和处理异常高占用资源的进程 这类进程通常表现为

    %CPU
    %MEM
    持续过高。

    ps aux --sort=-%cpu | head -n 5 # 查看CPU占用最高的几个进程
    ps aux --sort=-%mem | head -n 5 # 查看内存占用最高的几个进程

    一旦你通过

    ps aux
    找到了这些“捣乱”的进程,下一步就是处理它们。 处理方法:

    1. 温和终止:
      kill 
      这是最推荐的方式。
      kill
      命令默认发送
      SIGTERM
      信号(信号15),它会请求进程优雅地退出,给进程时间来保存数据、清理资源。
      kill 12345 # 替换为实际的PID

      等待几秒,再用

      ps aux | grep 12345
      确认进程是否已经退出。

    2. 强制终止:
      kill -9 
      如果
      kill 
      无效,进程仍然顽固地


# linux  # excel  # apache  # nginx  # 工具  # ai  # linux系统  # 内存占用  # excel表格  # 排列  # less  # sort  # 标识符  # 线程  # 多线程  # 事件  # bug  # 几个  # 如果你  # 这是  # 帮你  # 的是  # 出了  # 你可以  # 其父  # 还在  # 就能 


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


相关推荐: Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  网站制作免费,什么网站能看正片电影?  Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】  如何登录建站主机?访问步骤全解析  JavaScript如何实现倒计时_时间函数如何精确控制  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  如何在阿里云高效完成企业建站全流程?  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel怎么在Blade中安全地输出原始HTML内容  英语简历制作免费网站推荐,如何将简历翻译成英文?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  制作公司内部网站有哪些,内网如何建网站?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Android okhttputils现在进度显示实例代码  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  php json中文编码为null的解决办法  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭  如何将凡科建站内容保存为本地文件?  Laravel distinct去重查询_Laravel Eloquent去重方法  python中快速进行多个字符替换的方法小结  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  Laravel如何安装Breeze扩展包_Laravel用户注册登录功能快速实现【流程】  Python自动化办公教程_ExcelWordPDF批量处理案例  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  如何在景安云服务器上绑定域名并配置虚拟主机?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  Thinkphp 中 distinct 的用法解析  如何快速选择适合个人网站的云服务器配置?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】  如何快速搭建高效WAP手机网站吸引移动用户?  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  手机网站制作与建设方案,手机网站如何建设?  JavaScript如何操作视频_媒体API怎么控制播放  Laravel如何实现文件上传和存储?(本地与S3配置)  深圳网站制作培训,深圳哪些招聘网站比较好?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付