它是关于 Linux 的
procps
软件包、实用程序 ps
。
可以打印每个进程(线程)最后使用的CPU数量吗?
更新:不是 CPU 时间(10 秒),而是 CPU 编号(CPU0、CPU5、CPU123)
ps(1) 手册页显示您可以使用
psr
字段:
psr PSR processor that process is currently assigned to.
$ ps -o pid,psr,comm
PID PSR COMMAND
7871 1 bash
9953 3 ps
或者您可以使用
cpuid
字段,它具有相同的功能。
$ ps -o pid,cpuid,comm
PID CPUID COMMAND
7871 1 bash
10746 3 ps
使用两个名称的原因是为了与 Solaris (
psr
) 和 NetBSD/OpenBSD (cpuid
) 兼容。
要也获取线程,请添加
-L
选项(如果您使用 lwp
,则添加 -o
字段)。
无螺纹:
$ ps -U $USER -o pid,psr,comm | egrep 'chromi|PID' | head -4
PID PSR COMMAND
6457 3 chromium-browse
6459 0 chromium-browse
6461 2 chromium-browse
带螺纹:
$ ps -U $USER -L -o pid,lwp,psr,comm | egrep 'chromi|PID' | head -4
PID LWP PSR COMMAND
6457 6457 3 chromium-browse
6457 6464 1 chromium-browse
6457 6465 2 chromium-browse
还有一个未记录的
-P
选项,它将 psr
添加到正常字段:
$ ps -U $USER -LP | egrep 'chromi|PID' | head -4
PID LWP PSR TTY TIME CMD
6457 6457 3 ? 00:01:19 chromium-browse
6457 6464 1 ? 00:00:00 chromium-browse
6457 6465 2 ? 00:00:00 chromium-browse
多处理器中的哪一个?根据联机帮助页,它没有提供此选项。但在我的 Debian 稳定系统上它接受未记录的
-o cpu
ps L
的输出后,我相信您的答案是 cpuid
或 sgi_p
输出选项,分别是列 ID CPUID 和 P。
{"cpu", "CPU", pr_nop, sr_nop, 3, 0, BSD, AN|RIGHT}, /* FIXME ... HP-UX wants this as the CPU number for SMP? */
我在 Arch 上这样做了,它可能会帮助那里的人:
ps -C "process" -L -o pid,lwp,pcpu,cpuid,time