Linux 任务显示

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

监控系统进程是 Linux 用户和系统管理员的一项关键技能。了解哪些进程正在运行以及它们如何消耗资源,能让你维护系统的稳定性和性能。

在这个实验中,你将学习如何使用 top 命令,这是一个用于实时监控 Linux 系统进程的强大工具。top 命令提供了有关 CPU 使用情况、内存消耗和其他重要系统指标的详细信息。通过掌握这个重要的命令,你将能够识别资源密集型进程,并有效地管理你的 Linux 系统资源。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/echo -.-> lab-271407{{"Linux 任务显示"}} linux/cat -.-> lab-271407{{"Linux 任务显示"}} linux/cd -.-> lab-271407{{"Linux 任务显示"}} linux/top -.-> lab-271407{{"Linux 任务显示"}} linux/nano -.-> lab-271407{{"Linux 任务显示"}} end

top 命令简介

top 命令是一个基础的 Linux 实用工具,它能动态、实时地显示系统中正在运行的进程。“top”这个名称源于其默认会显示“最耗”CPU 的进程这一特性。

让我们先进入你的项目目录,然后探索 top 命令的基本用法:

cd ~/project

现在,运行 top 命令:

top

当你执行这个命令时,你应该会看到一个类似下面的交互式显示界面:

top - 14:25:30 up 2 days,  3:45,  1 user,  load average: 0.15, 0.20, 0.25
Tasks: 105 total,   1 running, 104 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.0 us,  1.0 sy,  0.0 ni, 97.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   4096.0 total,   2841.3 free,    845.2 used,    409.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   2970.5 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
 1234 labex     20   0  562340  42340  28456 S   2.0   1.0   0:30.25 firefox
 2345 labex     20   0   78912  23456  13204 S   0.7   0.6   0:12.34 terminal
 3456 root      20   0   43528   5424   4356 S   0.3   0.1   0:05.67 sshd
  ... (more processes)

top 的显示界面主要由两个部分组成:

  1. 摘要区域(前 5 行):提供系统级别的信息,包括:

    • 系统运行时间和负载平均值
    • 任务统计信息(总数、运行中、休眠等)
    • CPU 使用百分比
    • 内存使用情况(RAM 和交换空间)
  2. 进程列表(摘要下方的表格):列出正在运行的进程,并显示详细信息,例如:

    • PID:进程 ID
    • USER:进程所有者
    • PR:优先级
    • NI:谦让值(Nice value)
    • VIRT:使用的虚拟内存
    • RES:使用的常驻内存
    • %CPU:CPU 使用百分比
    • %MEM:内存使用百分比
    • COMMAND:命令名称

默认情况下,显示界面每 3 秒自动刷新一次。要退出 top 命令,只需按下 q 键。

现在,让我们使用 -n 1 选项来获取进程的静态快照。这个选项会让 top 只更新一次然后退出:

top -n 1 > ~/project/top_snapshot.txt

这个命令会在你的项目目录中创建一个名为 top_snapshot.txt 的文件,其中包含当前系统进程的快照。让我们验证一下文件内容:

cat ~/project/top_snapshot.txt

你应该会看到类似于交互式 top 会话中显示的输出,但它是以静态文本文件的形式呈现的。

解读 top 命令的输出

既然你已经获取了系统进程的快照,接下来让我们分析这些信息,以了解它所反映的系统资源使用情况。

使用 nano 文本编辑器打开 top_snapshot.txt 文件:

nano ~/project/top_snapshot.txt

在这个文件中,你可以看到与交互式 top 命令显示的相同信息。让我们着重从列表中找出最耗 CPU 的进程。

查看进程列表部分(摘要区域下方),找到 %CPU 列中数值最高的进程。这表明该进程在拍摄快照时占用了最多的 CPU 资源。

例如,如果你看到这样一行内容:

 1234 labex     20   0  562340  42340  28456 S   2.0   1.0   0:30.25 firefox

这表明用户“labex”拥有的 PID 为 1234 的进程(firefox)占用了 2.0% 的 CPU 和 1.0% 的内存。

记录下 CPU 使用率最高的进程的以下信息:

  1. PID(进程 ID)
  2. USER(进程所有者)
  3. %CPU(CPU 使用率百分比)
  4. %MEM(内存使用率百分比)
  5. COMMAND(正在运行的命令或程序)

要退出 nano,按下 Ctrl+X

现在,创建一个名为 top_analysis.txt 的文件来记录你的发现:

echo "Most CPU-intensive process analysis" > ~/project/top_analysis.txt

将最耗 CPU 的进程的详细信息添加到文件中。用你观察到的实际值替换占位符:

echo "PID: [Replace with PID]" >> ~/project/top_analysis.txt
echo "USER: [Replace with USER]" >> ~/project/top_analysis.txt
echo "CPU%: [Replace with %CPU]" >> ~/project/top_analysis.txt
echo "MEM%: [Replace with %MEM]" >> ~/project/top_analysis.txt
echo "COMMAND: [Replace with COMMAND]" >> ~/project/top_analysis.txt

例如,如果进程 1234(firefox)是最耗 CPU 的进程,你可以输入:

echo "PID: 1234" >> ~/project/top_analysis.txt
echo "USER: labex" >> ~/project/top_analysis.txt
echo "CPU%: 2.0" >> ~/project/top_analysis.txt
echo "MEM%: 1.0" >> ~/project/top_analysis.txt
echo "COMMAND: firefox" >> ~/project/top_analysis.txt

让我们验证一下我们写入文件的内容:

cat ~/project/top_analysis.txt

这应该会显示你分析文件的内容,其中包含最耗 CPU 的进程的详细信息。

在 top 命令中对进程进行排序和过滤

当你学会如何对进程进行排序和过滤时,top 命令会变得更加强大。在这一步中,你将学习如何自定义 top 的显示内容,以便聚焦于特定信息。

首先,让我们再次运行交互式的 top 命令:

top

top 运行时,你可以使用键盘快捷键来改变其行为:

  1. 按下 M(大写),按内存使用情况对进程进行排序
  2. 按下 P(大写),按 CPU 使用情况对进程进行排序(默认方式)
  3. 按下 T(大写),按运行时间对进程进行排序(即它们已经运行了多长时间)
  4. 按下 N(大写),按 PID(进程 ID)对进程进行排序

尝试每种排序选项,看看进程列表会如何变化。当你完成测试后,按下 q 退出 top

现在,让我们创建一个按内存使用情况排序的进程快照。我们将使用 top 的批处理模式并结合特定选项:

top -b -n 1 -o %MEM > ~/project/top_sorted_by_mem.txt

此命令使用了以下选项:

  • -b:批处理模式(非交互式)
  • -n 1:仅运行一次迭代
  • -o %MEM:按内存使用情况排序

让我们查看这个文件的内容:

cat ~/project/top_sorted_by_mem.txt

你应该会看到进程按内存使用情况排序,内存使用最多的进程位于顶部。

接下来,让我们过滤进程,只显示属于你用户账户的进程:

top -b -n 1 -u labex > ~/project/top_user_filtered.txt

-u labex 选项会过滤输出,只显示用户“labex”拥有的进程。让我们查看这个文件:

cat ~/project/top_user_filtered.txt

这个文件应该只显示“labex”用户拥有的进程。

最后,让我们将排序和过滤结合起来,创建一个更具针对性的视图:

top -b -n 1 -u labex -o %CPU > ~/project/top_custom.txt

此命令只显示属于用户“labex”的进程,并按 CPU 使用情况对它们进行排序。让我们查看结果:

cat ~/project/top_custom.txt

这些自定义选项使 top 成为一个多功能工具,可用于聚焦系统性能和资源使用的特定方面。

总结

在本次实验中,你学习了如何使用 top 命令来监控和分析 Linux 系统中的进程。你所掌握的技能包括:

  1. 运行 top 命令,实时查看系统进程
  2. 理解 top 输出中显示的信息,包括 CPU 使用率、内存使用率和进程详细信息
  3. 捕获进程信息的快照以进行分析
  4. 通过检查 CPU 和内存使用情况,识别资源密集型进程
  5. 通过排序和过滤选项自定义 top 的显示内容

这些技能对于 Linux 环境下的系统管理和性能监控至关重要。top 命令是快速评估系统健康状况和识别潜在性能问题最常用的工具之一。

通过掌握 top 命令,你现在能够有效地监控系统资源,识别可能导致性能问题的进程,并收集优化系统性能所需的信息。