Linux 中的 ps 实用程序(procps),如何检查使用哪个 CPU

作者:编程家 分类: linux 时间:2025-06-10

Linux 中的 ps 实用程序(procps):如何检查使用哪个 CPU

在 Linux 操作系统中,ps 是一种非常常用的实用程序,用于查看当前运行的进程和它们的相关信息。通过使用 ps 实用程序的一些选项和参数,我们可以获取到进程的 CPU 使用情况,包括它们运行在哪个 CPU 上。

查看进程的 CPU 使用情况

要查看进程的 CPU 使用情况,我们可以使用以下命令:

ps -eo pid,comm,%cpu,%mem,psr

这个命令将显示进程的 PID(进程 ID)、命令、CPU 使用率、内存使用率以及该进程运行在哪个 CPU 上(使用 psr 列来表示)。其中,%cpu 列显示的是进程在所有 CPU 上的总 CPU 使用率,而不是单个 CPU 的使用率。

通过 psr 列查看进程所在的 CPU

要查看进程运行在哪个 CPU 上,我们需要关注 psr 列。psr 列显示的是一个进程所在的 CPU 编号,它是从 0 开始的。如果一个进程运行在多个 CPU 上,那么 psr 列将显示一个逗号分隔的 CPU 编号列表。

以下是一个示例输出:

PID COMMAND %CPU %MEM PSR

1 systemd 0.0 1.3 0

2 kthreadd 0.0 0.0 0

3 ksoftirqd/0 0.0 0.0 0

4 kworker/0:0 0.0 0.0 0

5 kworker/0:0H 0.0 0.0 0

6 kworker/u256:0 0.0 0.0 0

7 rcu_sched 0.0 0.0 0

8 rcu_bh 0.0 0.0 0

9 migration/0 0.0 0.0 0

10 watchdog/0 0.0 0.0 0

从上面的输出中,我们可以看到这些进程运行在 CPU 0 上。

通过自然语言生成的案例代码

下面是一个使用 Python 编写的案例代码,通过调用 psutil 库来获取进程的 CPU 使用情况和所在的 CPU 编号:

python

import psutil

def get_process_cpu_info():

process_info = []

for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent', 'cpu_affinity']):

p_info = {

'pid': proc.info['pid'],

'name': proc.info['name'],

'cpu_percent': proc.info['cpu_percent'],

'memory_percent': proc.info['memory_percent'],

'cpu_affinity': proc.info['cpu_affinity']

}

process_info.append(p_info)

return process_info

def print_process_cpu_info():

process_info = get_process_cpu_info()

print('PID\tNAME\t\t\t%CPU\t%MEM\tCPU_AFFINITY')

for p_info in process_info:

cpu_affinity = ','.join(str(cpu) for cpu in p_info['cpu_affinity'])

print(f"{p_info['pid']}\t{p_info['name']}\t\t{p_info['cpu_percent']}\t{p_info['memory_percent']}\t{cpu_affinity}")

print_process_cpu_info()

此代码使用了 psutil 库来获取进程的相关信息,包括 PID、名称、CPU 使用率、内存使用率和 CPU 亲和性。在打印进程信息时,我们将 CPU 亲和性列表转换为逗号分隔的字符串进行展示。

希望这篇文章能帮助你了解如何使用 ps 实用程序来检查进程运行在哪个 CPU 上。通过 psr 列,我们可以获取到进程所在的 CPU 编号。此外,使用 psutil 库也可以方便地在代码中获取进程的 CPU 使用情况和所在的 CPU 编号。