简介
在这个实验中,你将学习用于管理和监控进程的基础 Linux 技能。你将探索如何使用 ps aux
命令列出系统上所有正在运行的进程,该命令会提供当前进程的快照,并包含用户、PID、CPU 和内存使用情况等详细信息。
此外,你将了解如何使用 pgrep
命令高效地查找特定进程,并通过使用 top
命令深入了解实时进程活动和资源消耗情况。这些技术对于系统管理、故障排除和理解系统性能至关重要。
在这个实验中,你将学习用于管理和监控进程的基础 Linux 技能。你将探索如何使用 ps aux
命令列出系统上所有正在运行的进程,该命令会提供当前进程的快照,并包含用户、PID、CPU 和内存使用情况等详细信息。
此外,你将了解如何使用 pgrep
命令高效地查找特定进程,并通过使用 top
命令深入了解实时进程活动和资源消耗情况。这些技术对于系统管理、故障排除和理解系统性能至关重要。
ps aux
列出正在运行的进程在这一步中,你将学习如何使用 ps
命令查看 Linux 系统上当前正在运行的进程。进程简单来说就是正在运行的程序。了解如何列出和识别进程是 Linux 系统管理和故障排除的一项基本技能。
ps
命令用于报告当前进程的快照。当与某些选项一起使用时,它可以提供大量详细信息。
让我们使用带有 aux
选项的 ps
命令。这些选项通常一起使用,以用户友好的格式显示系统上运行的所有进程。
a
:显示所有进程。u
:显示进程的用户和所有者。x
:显示没有控制终端的进程(有助于查看后台进程)。如果终端尚未打开,请打开它。默认情况下,你应该位于 ~/project
目录中。
输入以下命令并按回车键:
ps aux
你将看到一长串进程,类似于以下内容(具体输出会有所不同):
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 16840 9880 ? Ss Jul23 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S Jul23 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? I< Jul23 0:00 [rcu_gp]
...
labex 12345 0.1 0.5 123456 54321 pts/0 Ss HH:MM 0:00 /usr/bin/zsh
labex 12367 0.0 0.1 21000 5000 pts/0 R+ HH:MM 0:00 ps aux
...
让我们来分析一下你看到的各列:
USER
:拥有该进程的用户。PID
:进程 ID,每个正在运行的进程都有一个唯一的编号。%CPU
:进程使用的 CPU 时间百分比。%MEM
:进程使用的物理内存百分比。VSZ
:虚拟集大小(Virtual Set Size),即进程使用的虚拟内存总量。RSS
:常驻集大小(Resident Set Size),即进程使用的物理内存量。TTY
:进程的控制终端(如果有)。?
表示没有控制终端。STAT
:进程状态(例如,R
表示正在运行,S
表示睡眠,Z
表示僵尸进程)。START
:进程启动的时间。TIME
:进程累计使用的 CPU 时间。COMMAND
:启动该进程的命令。滚动查看这个输出可能会让人感到不知所措。在下一步中,你将学习如何过滤这个输出以查找特定进程。
点击 继续 以继续操作。
pgrep
查找特定进程在上一步中,你看到 ps aux
会产生大量输出。通常,你只想查找特定的进程。pgrep
命令就是为此目的而设计的。它根据进程名称搜索进程,并返回它们的进程 ID(PID)。
pgrep
的基本语法是 pgrep [选项] 模式
。模式
通常是你要查找的进程名称。
让我们尝试查找 zsh
进程的 PID,zsh
是你当前在终端中使用的 shell。
输入以下命令并按回车键:
pgrep zsh
你应该会看到一个或多个数字打印到终端上。这些就是正在运行的 zsh
进程的 PID。
12345
(实际数字会因你而异)。
如果你想查看 pgrep
找到的 PID 对应的完整命令,可以将其与 ps
命令结合使用。ps
的 -p
选项允许你指定一个 PID。
让我们使用 zsh
进程的 PID 来查找其完整命令。首先,再次运行 pgrep zsh
以获取当前的 PID。假设在这个示例中 PID 是 12345
(将 12345
替换为你实际得到的 PID)。
现在,使用 ps -p
后跟 PID:
ps -p 12345
你将看到类似以下的输出:
PID TTY TIME CMD
12345 pts/0 00:00:00 zsh
这证实了 PID 12345
对应于 zsh
命令。
当你知道进程名称时,pgrep
是一种快速查找进程 PID 的方法。当你需要将 PID 用于其他命令时,这尤其有用,例如终止进程(你将在未来的实验中学习到)。
点击 继续 进入下一步。
top
命令监控进程详情在这一步中,你将了解 top
命令,它能为你提供系统中正在运行的进程的动态实时视图。ps aux
命令提供的是一个静态快照,而 top
命令会持续更新,让你了解哪些进程正在占用最多的 CPU 和内存资源。
top
命令对于监控系统性能以及识别可能正在消耗过多资源的进程非常有用。
在你的终端中输入以下命令并按下回车键:
top
你的终端界面将切换,显示一个不断更新的进程列表。输出内容大致如下:
top - HH:MM:SS up X days, HH:MM, X users, load average: X.XX, X.XX, X.XX
Tasks: XXX total, X running, XXX sleeping, X stopped, X zombie
%Cpu(s): X.X us, X.X sy, X.X ni, XX.X id, X.X wa, X.X hi, X.X si, X.X st
MiB Mem : XXXX.X total, XXXX.X free, XXXX.X used, XXX.X buff/cache
MiB Swap: XXXX.X total, XXXX.X free, XXXX.X used. XXXX.X avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12345 labex 20 0 123456 54321 32100 S 0.1 0.5 0:00.10 zsh
12367 labex 20 0 21000 5000 3000 R 0.0 0.1 0:00.05 top
...
让我们来看看 top
命令输出的关键区域:
摘要区域(顶部):此部分显示系统的摘要信息,包括:
进程列表区域(底部):此部分列出了各个进程,默认按照 CPU 使用率排序。这些列与 ps aux
命令的输出类似,但 top
会实时更新这些信息。关键列包括:
PID
:进程 ID。USER
:进程的所有者。%CPU
:CPU 使用率百分比。%MEM
:内存使用率百分比。COMMAND
:命令名称。当 top
命令运行时,你可以使用各种按键与之交互:
q
键退出 top
命令。M
键按内存使用率对进程列表进行排序。P
键按 CPU 使用率对进程列表进行排序(这是默认排序方式)。k
键终止一个进程(系统会提示你输入要终止进程的 PID)。使用此功能时请务必谨慎!花点时间观察这些进程以及 CPU 和内存使用率的变化情况。你会发现 top
进程本身位于列表的顶部附近,因为它正在积极使用 CPU 来更新显示内容。
当你完成对 top
命令的探索后,按下 q
键退出并返回到常规的终端提示符。
点击 继续 完成此步骤和本次实验。
在本次实验中,你学习了在 Linux 系统中检查进程是否正在运行的基本技术。你首先使用 ps aux
命令列出系统中所有正在运行的进程,了解了诸如 USER
、PID
、%CPU
和 %MEM
等不同列的含义,这些列提供了进程活动的静态快照。
接着,你探索了如何使用 pgrep
命令高效地查找特定进程,该命令根据进程的名称或其他属性进行搜索,并返回它们的进程 ID(PID)。最后,你学习了如何使用 top
命令实时监控进程详情,它提供了系统资源使用情况和各个进程统计信息的动态视图,使你能够观察 CPU 和内存的消耗情况。