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

时间:2011-04-20 14:42:53

标签: linux ps procps

大约是procps包,实用程序ps用于linux。

是否可以打印每个进程(线程)上次使用的CPU的数量?

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

4 个答案:

答案 0 :(得分:19)

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

两个名称的原因是为了与Solarispsr)和NetBSD/OpenBSDcpuid)兼容。

要获得线程,请添加-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

答案 1 :(得分:3)

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

<小时/> 在查看源代码和ps L的输出后,我相信您的答案分别是cpuidsgi_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? */

答案 2 :(得分:3)

也被低估了:

mpstat -I ALL 1 | less -SR

答案 3 :(得分:1)

我是在Arch上这样做的,它可能会帮助某个人:

ps -C "process" -L -o pid,lwp,pcpu,cpuid,time
  • -C :选择名为“ process”的进程
  • -L :列出进程线程
  • -o :指定输出信息
    • pid :进程ID
    • lwp :轻量级进程(线程)
    • pcpu :CPU使用率(百分比)
    • cpuid :CPU ID
    • 时间:线程时间(从开始)