在 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 编号列表。以下是一个示例输出:
从上面的输出中,我们可以看到这些进程运行在 CPU 0 上。通过自然语言生成的案例代码下面是一个使用 Python 编写的案例代码,通过调用 psutil 库来获取进程的 CPU 使用情况和所在的 CPU 编号:
pythonimport psutildef 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_infodef 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 编号。