首页 > 运维 > linux运维 > 正文

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

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

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

在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
    稿定在线PS

    PS软件网页版

    稿定在线PS 99
    查看详情 稿定在线PS
    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 <zombie_pid>
    登录后复制
    来找到僵尸进程的父进程(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 <PID>
      登录后复制
      这是最推荐的方式。
      kill
      登录后复制
      命令默认发送
      SIGTERM
      登录后复制
      信号(信号15),它会请求进程优雅地退出,给进程时间来保存数据、清理资源。
      kill 12345 # 替换为实际的PID
      登录后复制

      等待几秒,再用

      ps aux | grep 12345
      登录后复制
      确认进程是否已经退出。

    2. 强制终止:
      kill -9 <PID>
      登录后复制
      如果
      kill <PID>
      登录后复制
      无效,进程仍然顽固地

以上就是如何在Linux中查看运行进程 Linux ps aux命令详解的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号