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

osg*_*sgx 7 linux ps procps

它是关于linux的procps包,实用程序ps.

它可以打印每个进程(线程)的最后使用的CPU数量吗?

更新:不是CPU时间(10秒),而是CPU NUMBER(CPU0,CPU5,CPU123)

Mik*_*kel 19

ps(1)手册页说你可以使用以下psr字段:

   psr        PSR     processor that process is currently assigned to.
Run Code Online (Sandbox Code Playgroud)
$ ps -o pid,psr,comm
  PID PSR COMMAND
 7871   1 bash
 9953   3 ps
Run Code Online (Sandbox Code Playgroud)

或者您可以使用该cpuid字段,它执行相同的操作.

$ ps -o pid,cpuid,comm
  PID CPUID COMMAND
 7871     1 bash
10746     3 ps
Run Code Online (Sandbox Code Playgroud)

两个名称的原因是为了与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
Run Code Online (Sandbox Code Playgroud)

有线程:

$ 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
Run Code Online (Sandbox Code Playgroud)

还有一个未记录的-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
Run Code Online (Sandbox Code Playgroud)


jco*_*ctx 4

哪个是多个处理器?根据联机帮助页,它没有提供此选项。但在我的 Debian 稳定系统上它接受未记录的-o cpu


查看源代码和 的输出后ps L,我相信您的答案是 或cpuid输出sgi_p选项,分别是列 ID CPUID 和 P。
'cpu'应该根据 output.c 中的注释工作,但它目前与 'nop' 输出 pr_nop() 相关联:

{"cpu", "CPU", pr_nop, sr_nop, 3, 0, BSD, AN|RIGHT}, /* FIXME ... HP-UX wants this as the CPU number for SMP? */