如何使用 ps、top、htop 和 atop 命令检查 Linux 中正在运行的进程

在监控服务器时,您通常需要同时跟踪多个事项,例如磁盘使用情况、网络、CPU 温度等。虽然所有这些信息最好在仪表板界面中呈现,但许多有创造力的人已经在 CL I 中开发了临时仪表板,可以像使用图形用户界面一样显示有关系统的信息。

将能够使用pstophtopatop,它们是一些最强大的命令行实用程序,可以深入了解系统行为。

每种工具都有其优势,系统管理员经常将它们结合起来以全面了解他们的系统

ps 命令

ps 命令是“进程状态”的缩写。它是 Linux 中用于查看活动进程信息的基本工具。

使用 ps 命令的基本语法是:

ps [options]

当不带任何选项运行时, ps 通常显示:

  • 与当前终端会话相关的进程
  • 进程 ID (PID)
  • 终端类型(TTY)
  • 使用的 CPU 时间
  • 命令名称
$ ps ux
USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
ben      2738708  0.0  0.0  21188 10440 ?        Ss   Aug06   0:00 /usr/lib/systemd/systemd --user
ben      2738711  0.0  0.0  21456  3292 ?        S    Aug06   0:00 (sd-pam)
ben      2738724  0.0  0.0 109144  5664 ?        Ssl  Aug06   0:00 /usr/bin/pipewire
ben      2738726  0.0  0.0  97736  4848 ?        Ssl  Aug06   0:00 /usr/bin/pipewire -c filter-chain.conf
ben      2738728  0.0  0.0  39136  2348 ?        Ss   Aug06   0:01 /snap/snapd-desktop-integration/315/usr/bin/snapd-desktop-integration
ben      2738730  0.0  0.0 404988  8888 ?        Ssl  Aug06   0:00 /usr/bin/wireplumber
ben      2738731  0.0  0.0 109396  6548 ?        Ssl  Aug06   0:00 /usr/bin/pipewire-pulse
ben      2738744  0.0  0.0   9492  4516 ?        Ss   Aug06   0:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
ben      2738810  0.0  0.0  28284  5048 ?        Ss   Aug06   0:09 /usr/bin/jackdbus auto
ben      2738861  0.0  0.0 536560  5860 ?        Ssl  Aug06   0:00 /usr/libexec/xdg-document-portal
ben      2738865  0.0  0.0 309308  5304 ?        Ssl  Aug06   0:00 /usr/libexec/xdg-permission-store
ben      2738981  0.0  0.0 279192  4876 ?        Sl   Aug06   0:00 /snap/snapd-desktop-integration/315/usr/bin/snapd-desktop-integration
ben      3509142  0.0  0.0  15432  5560 ?        S    08:51   0:04 sshd: ben@pts/0
ben      3509144  0.0  0.0  11384  5032 pts/0    Ss   08:51   0:00 -bash
ben      3833519  0.0  0.0  13616  4580 pts/0    R+   18:53   0:00 ps ux
ben@ayd-server:~$ 

常用选项和标志

ps 命令会显示一些有用的信息,但您可以使用高级选项和标志来更改其默认行为。以下是一些可用的选项列表:

  1. -e 或 -A:显示所有进程
  2. -f:完整格式列表,提供更多详细信息
  3. -u 用户名:显示特定用户的进程
  4. -p pid:显示特定进程 ID 的信息
  5. –sort=[+|-]key:对输出进行排序。+ 表示升序,- 表示降序
  6. -o format:自定义输出格式

ps 命令用法示例

ps 命令非常灵活。你可以混合搭配上述标志来生成所需的输出。例如:

  1. 列出所有进程:ps -e
  2. 所有进程的完整格式列表:ps -ef
  3. 显示特定用户的进程:ps -u username
  4. 按 CPU 使用率排序显示进程:ps -eo pid,ppid, cmd,%cpu,%mem --sort=-%cpu
  5. 仅显示进程 ID:ps -eo pid

top 命令

top 命令是一个实时系统监控工具,它提供 Linux 系统正在运行的进程的动态交互式视图。它显示系统摘要信息以及当前由 Linux 内核管理的进程或线程列表。

您可以通过在终端中执行以下操作来运行 top 命令:

top

此命令启动顶层界面,默认每3秒刷新一次。

了解顶部接口

顶部界面分为两个主要部分,分别呈现不同的信息。以下是这两个部分的简要概述:

  1. 摘要区域(上半部分):
    • 系统时间和正常运行时间
    • 登录用户数
    • 平均负载(1、5 和 15 分钟平均值)
    • 任务摘要(总计、正在运行、正在休眠、已停止、正在僵尸)
    • CPU 使用情况细分(用户、系统、空闲等)
    • 内存使用情况(总计、可用、已用、缓冲区/缓存)
    • 交换使用情况
  2. 进程列表(下半部分):PID:进程 ID
    • USER:拥有该进程的用户
    • PR:优先级
    • NI:物有所值
    • VIRT:使用的虚拟内存
    • RES:已使用的驻留内存
    • SHR:共享内存
    • S:进程状态
    • %CPU:CPU 使用率
    • %MEM:内存使用情况
    • TIME+:CPU 总时间
    • COMMAND:命令名称

top 命令还提供各种标志和选项,允许您自定义其行为和输出。以下是一些最有用的:

  1. -b (批处理模式):以批处理模式运行 top,这对于将输出发送到其他程序或文件很有用。
  2. -n (迭代次数): 此参数指定退出顶部之前的迭代次数。它在脚本中或捕获特定数量的样本时很有用。
  3. -p (监视特定 PID): 仅显示具有指定 PID 的进程。
  4. -u (显示特定用户的进程): 仅显示指定用户拥有的进程。
  5. -H (显示线程): 显示单个线程而不是进程。
  6. -o (按字段排序):按特定字段(例如 CPU 使用率、内存使用率)对进程列表进行排序。例如:top -o %CPU
  7. – i (忽略空闲进程):不显示空闲或僵尸进程。
  8. -c (显示命令行):显示每个进程的完整命令行,而不仅仅是命令名称。
  9. -d (延迟时间): 设置更新之间的延迟时间(以秒为单位)。默认值为 3.0 秒。

这些标志可以组合起来以获得更具体的输出。例如,以下命令将以批处理模式运行 top 五次迭代,按内存使用情况排序,仅显示根进程,并将输出发送到文件:

top -b -n 5 -o %MEM -u root > top_output.txt

记住,在 top 运行时,你还可以通过按下相应的键来交互使用其中的许多选项。例如,按“ 
h ”切换线程视图,“ 
i ”忽略空闲进程,“ 
c ”切换命令行显示。

htop 命令

htop 是 Unix 系统上的一个交互式进程查看器,旨在作为 top 命令的增强替代品。与其他进程查看器相比,它具有以下几个优势:

  1. 用户友好界面: 色彩丰富,比顶部更直观。
  2. 鼠标支持: 可以使用鼠标进行选择并与终端交互。
  3. 树状视图: 可视化进程关系。
  4. 更简单的进程管理: 无需输入 PID 即可终止进程。
  5. 内置计量器: 包括内置 CPU、内存和交换使用情况计量器。

安装 htop

大多数系统通常不会预装 htop。请在 Ubuntu/Debian 系统上运行以下命令,并以必要的权限进行安装:

sudo apt update && sudo apt install htop

安装后,您只需在终端中输入 htop 即可启动 htop。

使用 htop:界面和导航

htop 界面主要分为两个部分:

  1. 标题(顶部)部分显示系统范围的统计数据和仪表
    • CPU 使用率(每个核心和整体)
    • 内存使用情况
    • 交换使用情况
    • 任务、平均负载、正常运行时间
  2. 进程列表(底部)显示每个进程的详细信息

乍一看,htop 的界面可能让人眼花缭乱,但一旦你学会了如何操作,只需按几下键就能获得有关系统的详细信息。让我们看看一些键盘操作以及它们在 htop 界面上的作用:

  • 箭头、Page Up、Page Down、Home、End:滚动进程列表。
  • 空格:标记或取消标记进程。
  • U——取消标记所有进程(删除使用空格键添加的所有标记)。
  • s——跟踪进程系统调用。
  • F1 – 帮助
  • F2 – 设置
  • F3 – 搜索
  • F4 – 过滤:输入部分进程命令行,仅显示名称匹配的进程。
  • F5——树视图。
  • F6——排序。
  • F7 – 提高所选进程的优先级。此操作只能由超级用户执行。
  • F8——降低所选进程的优先级。
  • F9——终止进程。
  • F10——退出。

自定义 htop 显示和设置

与其他命令行实用程序一样,你可以向 htop 传递一些参数来自定义其输出和显示。例如,以下是命令及其相应效果的列表。

  1. htop -t:从树视图开始
  2. htop -u username:仅显示特定用户的进程
  3. htop -p PID1,PID2,...:仅显示指定进程

htop 命令常用的选项

以下是htop的一些最常用选项:

选项描述
-d <延迟>设置更新之间的延迟(延迟几秒)
-u <用户>仅显示用户拥有的进程
-p <进程号>仅显示具有特定 ID 的进程。
-s <列>对给定列的进程进行排序
-t在命令列中以树状视图显示进程层次结构
–无颜色以单色模式运行 htop,禁用彩色

1. htop -d <延迟>:

htop -d 10 表示屏幕更新间隔为 1 秒。如果设置延迟时间为 15,则表示延迟 1.5 秒;同样,设置延迟时间为 23,则表示延迟 2.3 秒,以此类推。这个延迟时间很有用,因为它可以减少频繁更新。

2. htop -u <用户名>:

用于仅显示指定用户的进程。如下所示:

htop -u www-data

3. htop -p <进程ID>:

用于仅显示给定的 PID。

4. htop -s <列>:

对给定的列进行排序

5. htop -t:

在命令列中以树状视图显示进程层次结构。

6. htop -无颜色:

禁用颜色。

7. -v –版本:

输出版本信息并退出。

atop 命令

atop(高级 Top)是一款功能强大的交互式监视器,允许用户查看 Linux 系统的负载。它以系统级别显示最关键硬件资源(CPU、内存、磁盘和网络)的状态。它拥有一些与其他监视工具不同的独特功能:

  1. 持久日志记录:  atop 可以将快照写入日志文件以进行长期分析。
  2. 资源特定视图: 它有专门用于 CPU、内存、磁盘和网络详细信息的屏幕。
  3. 累计报表: 可显示自系统启动以来的资源消耗情况。
  4. 进程核算: 它还可以跟踪间隔采样可能遗漏的短暂进程。

建议阅读:如何在 Linux 中查找最常用的磁盘空间目录和文件 

安装于顶部

大多数系统上并未预装 atop。您可以运行以下命令在大多数 Ubuntu/Debian 发行版上安装它:

sudo apt update && sudo apt install atop

安装后,atop 服务通常会自动启动以进行持续记录。

要查看 atop 界面,只需在终端中输入 atop 即可。这将打开一个新屏幕,您将在其中看到以下信息:

  1. 系统级信息:
    • 日期、时间、正常运行时间和系统数量
    • CPU 统计信息(用户、系统、空闲、等待等)
    • 内存和交换使用情况
    • 磁盘 I/O 统计信息
    • 网络统计
  2. 流程级信息:
    • PID:进程 ID
    • SYSCPU:系统 CPU 时间
    • USRCPU:用户CPU时间
    • VGROW:虚拟内存增长
    • RGROW:驻留内存增长
    • RDDSK:磁盘读取活动
    • WRDSK:磁盘写入活动
    • ST:进程状态
    • EXC:退出代码
    • CMD:命令名称

atop 是一款功能强大的工具,一旦您学会了使用它,就能充分享受它的强大功能。以下列出了一些您可以尝试使用 atop 的基本命令:

  • t:显示特定时间间隔的详细系统和进程统计信息
  • c、、、:在 CPU m、内存、磁盘和网络特定视图之间切换dn
  • v:显示程序版本信息
  • z:仅显示活动进程(隐藏空闲进程)
  • 1:显示平均每个 CPU 的利用率
  • PMD:分别按 CPU、内存或磁盘活动排序
  • q:退出顶部

发表评论