介绍
在本教程中,我们将介绍一些终端命令和第三方插件,以帮助我们找到每个进程的资源使用情况。
Linux内置命令
top
命令
通常,我们可以使用Linux
内置的top
命令。此命令在命令提示符中显示正在运行的系统的实时视图, 如果我们想了解单个进程,我们可以使用-p
参数。
使用-p
参数时,我们经常希望包含进程ID。我们可以使用ps
命令找到命名进程的进程ID。找到进程ID后,我们可以通过以下方式将该数字输入到top
命令中:
top -p 2225
以下是Chrome的进程信息(Chrome不止一个进程,这里随便挑选了一个)
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.8 us, 2.3 sy, 0.0 ni, 93.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7859.9 total, 878.7 free, 2598.0 used, 4383.2 buff/cache
MiB Swap: 2048.0 total, 569.5 free, 1478.5 used. 2577.1 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
126635 song 20 0 32.6g 175324 83832 S 1.3 2.2 8:11.50 chrome
Shell将每隔几秒钟刷新一次此屏幕,为我们提供进程状态的更新视图。但是,显示不是很人性化。我们可能需要使用一些第三方插件来提供更好的观感。
pidstat
命令
Linux提供了另一个名为pidstat的命令来检查正在使用的资源的百分比。但是,它仅在我们运行此命令时为我们提供了当前资源使用情况的快照,而不是像top
命令所期望的那样提供实时视图。另一方面,这使得这个命令成为一个轻量级的进程。
该命令是sysstat
包的一部分,它不是vanilla Linux,但我们仍然可以在手册页上找到该命令的文档。我们应该首先使用这个命令安装这个包:
sudo apt install sysstat
安装此软件包后,我们可以使用包含的pidstat
命令。如果我们不知道要查找的进程ID,我们需要首先使用ps命令查找该编号。下面是如何使用pidstat
命令:
pidstat --human -p 29924
我查看了Docker Desktop进程,以下是详细信息
Linux 5.15.0-43-generic (ubuntu20-04) 2022年08月16日 _x86_64_ (8 CPU)
22时45分39秒 UID PID %usr %system %guest %wait %CPU CPU Command
22时45分39秒 1000 29924 0.0% 0.0% 0.0% 0.0% 0.0% 5 Docker Desktop
–human参数将以“.%”样式显示百分比数字。如果没有这个参数,它将只显示数字。
Linux为我们提供了一些方便的命令来获取特定任务的系统资源使用情况。但是,它们只能在命令提示符下显示数字。如果我们想以人类可读的形式看到资源使用的逐渐变化,我们需要依靠一些第三方插件来绘制图表。
第三方插件
以下附加插件需要在Linux机器上安装Python
和pip
。一旦我们在我们的机器上安装了这些,我们就可以使用pip
来安装这些包并监控特定进程的资源使用情况。
psrecord
psrecord
通过psutil
库记录CPU和内存使用情况。在我们的Linux系统上使用起来很简单。
我们可以在命令提示符下输入这个命令来安装这个插件:
pip install psrecord
在我们成功安装psrecord
之后。 我们需要先通过内置的ps
命令找到进程ID。
找到我们感兴趣的进程ID后,我们调用psrecord
来记录这个进程的资源使用情况,并将数据绘制成图像文件:
psrecord 126635 --interval 1 --duration 10 --plot 126635.png
在这里,我们指定psrecord
来监视进程10秒的持续时间,并每1秒记录一次。
如果系统正确处理该命令,当前目录中会出现一个名为“126635.png”的图像:
memory_profiler
如果我们不知道进程 ID,我们将如何监控资源使用情况呢?我们可以使用另一个名为memory_profiler
的Python程序来监控内存使用情况。此程序仅检查内存使用情况。
我们可以使用pip
来安装这个包:
pip install memory_profiler
安装包后,我们可以使用此命令来监视使用可执行文件目录的进程。这里我们仅以bash
为例:
mprof run bash
运行此命令后,memory_profiler
将在当前目录中生成一个.dat文件。我们不需要为memory_profiler
指定文件,因为它会自行搜索可用文件。我们现在需要做的就是告诉memory_profiler
为我们绘制图表。
因此,这一步我们需要做的就是在命令提示符下键入以下命令:
mprof plot
memory_profiler
不支持CPU性能监控。因此,如果我们要检查CPU使用率,我们需要使用其他工具。
通过Python,我们可以很容易地找到一种更好的方法来衡量一个进程的资源使用情况。
结论
在Linux系统中查看和访问系统资源使用情况有多种方式。它们可以分为两种不同的方法:
- 直接使用现有系统模块的集成命令
- 额外功能的第三方插件,例如图表
如果我们想通过最少的安装来保持系统清洁,建议使用集成命令。否则,这些第三方插件是更好的选择,因为它们为我们提供了更好的体验。