它是关于procps包,实用程序ps for linux。
它可以打印每个进程(线程)的最后使用的CPU数量吗?
更新:不是CPU时间(10秒),而是CPU NUMBER(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选项(如果使用-o,则添加lwp字段)。
没有线程:
$ 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所以它确实如此。 没有看到那一个!
还有一个-P选项,没有记录,但保存了一些输入。
这是一个有着如此大量无证选择的男人 - 地狱!
也被低估了:
mpstat -I ALL 1 | less -SR
它在旧的ubuntu中可用吗?
它已经在Dapper(2006)中出现,并且位于包sysstat中。 虽然没有看得更远
不幸的是,我没有root权限来安装sysstat。
就此而言,您可以运行top并按1(数字1)查看每个CPU的工作负载。
或者watch -n 1 mpstat -A。
哪个多处理器?根据联机帮助页,它没有为此提供选项。但是在我的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? */
不,它没有。 不是CPU时间,而是Number of last used CPU(CPU0,CPU1,CPU2),因为它在top"f""j"J: P = Last used cpu (SMP)
但是来自相同procps的top可以。
我看到并同意了。 但是,如联机帮助页所记录,ps中没有这样的选项。
啊哈! 试试-o cpu; 它接受它,但在我的单处理器系统上只显示" -"
在我的4cpu系统上,它对于所有进程也是-(
请参阅我的最新编辑,希望其中一个选项能满足您的需求。
我在Arch上这样做了,它可以帮助那里的人:
ps -C"process" -L -o pid,lwp,pcpu,cpuid,time
-C:选择名为"process"的进程
-L:列出进程线程
-o:指定输出信息
pid:进程ID
lwp:轻量级进程(线程)
pcpu:CPU使用率(百分比)
cpuid:CPU ID
时间:线程时间(从开始)