简介
监控系统进程是 Linux 用户和系统管理员的一项关键技能。了解哪些进程正在运行以及它们如何消耗资源,能让你维护系统的稳定性和性能。
在这个实验中,你将学习如何使用 top
命令,这是一个用于实时监控 Linux 系统进程的强大工具。top
命令提供了有关 CPU 使用情况、内存消耗和其他重要系统指标的详细信息。通过掌握这个重要的命令,你将能够识别资源密集型进程,并有效地管理你的 Linux 系统资源。
监控系统进程是 Linux 用户和系统管理员的一项关键技能。了解哪些进程正在运行以及它们如何消耗资源,能让你维护系统的稳定性和性能。
在这个实验中,你将学习如何使用 top
命令,这是一个用于实时监控 Linux 系统进程的强大工具。top
命令提供了有关 CPU 使用情况、内存消耗和其他重要系统指标的详细信息。通过掌握这个重要的命令,你将能够识别资源密集型进程,并有效地管理你的 Linux 系统资源。
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
的显示界面主要由两个部分组成:
摘要区域(前 5 行):提供系统级别的信息,包括:
进程列表(摘要下方的表格):列出正在运行的进程,并显示详细信息,例如:
默认情况下,显示界面每 3 秒自动刷新一次。要退出 top
命令,只需按下 q
键。
现在,让我们使用 -n 1
选项来获取进程的静态快照。这个选项会让 top
只更新一次然后退出:
top -n 1 > ~/project/top_snapshot.txt
这个命令会在你的项目目录中创建一个名为 top_snapshot.txt
的文件,其中包含当前系统进程的快照。让我们验证一下文件内容:
cat ~/project/top_snapshot.txt
你应该会看到类似于交互式 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 使用率最高的进程的以下信息:
要退出 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
运行时,你可以使用键盘快捷键来改变其行为:
M
(大写),按内存使用情况对进程进行排序P
(大写),按 CPU 使用情况对进程进行排序(默认方式)T
(大写),按运行时间对进程进行排序(即它们已经运行了多长时间)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 系统中的进程。你所掌握的技能包括:
top
命令,实时查看系统进程top
输出中显示的信息,包括 CPU 使用率、内存使用率和进程详细信息top
的显示内容这些技能对于 Linux 环境下的系统管理和性能监控至关重要。top
命令是快速评估系统健康状况和识别潜在性能问题最常用的工具之一。
通过掌握 top
命令,你现在能够有效地监控系统资源,识别可能导致性能问题的进程,并收集优化系统性能所需的信息。