ps -o pcpu
必须显示真正过时的 CPU 使用情况:
user@comp:~/acr/bin$ ps -o pid,pcpu,comm k-pcpu -u `whoami` | head
PID %CPU COMMAND
3709 34.7 R
15292 34.4 R
3603 33.8 R
3593 33.1 R
3864 33.1 R
3833 32.8 R
3623 32.4 R
3723 32.3 R
3809 32.3 R
当前使用量为零。显示top
了一些很小的百分比,但实际上这些进程现在只是在等待用户输入:
user@comp:~/acr/bin$ top
top - 21:39:03 up 55 days, 6:01, 4 users, load average: 0.89, 0.79, 0.81
Tasks: 648 total, 2 running, 646 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.3 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.5 st
KiB Mem : 23920025+total, 19068168+free, 43706008 used, 4812568 buff/cache
KiB Swap: 8265724 total, 8232252 free, 33472 used. 19399897+avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8431 user 20 0 778708 293092 13932 S 2.3 0.1 54:05.37 R
8504 user 20 0 765680 279928 13904 S 2.3 0.1 47:20.29 R
9217 user 20 0 766256 280460 13884 S 2.3 0.1 48:35.28 R
12921 user 20 0 763716 278040 13924 S 2.3 0.1 34:58.31 R
12998 user 20 0 765096 279276 13892 S 2.3 0.1 129:13.39 R
13026 user 20 0 764736 280960 13884 S 2.3 0.1 130:57.73 R
13093 user 20 0 765824 280056 13884 S 2.3 0.1 22:41.56 R
13208 user 20 0 765696 279884 13920 S 2.3 0.1 39:41.12 R
13325 user 20 0 776420 290744 13912 S 2.3 0.1 35:56.80 R
13832 user 20 0 765244 279424 13888 S 2.3 0.1 128:38.19 R
显示ps
超过 30% - 这必须在至少 24 小时的大得离谱的时间窗口内完成,因为这些进程至少在过去 12 小时内没有处理任何内容!在此之前,他们的工作率是100%。
问题:
- 问题出在哪里——是不是有什么bug?
- 如何让它显示当前的使用情况?
我的系统是 CentOS Linux 版本 7.6.1810(核心),位于 32 CPU 虚拟机上。
答案1
man ps 谈到 %CPU 时说:
目前,它是使用的 CPU 时间除以进程已运行的时间(cputime/realtime 比率),以百分比表示。
因此,自从该过程开始以来,它就是历史性的。
顶部显示每个延迟时间片中的值。
top 有一个 -b (批处理)选项,它以文本形式输出报告,而不是使用 ncurses。您可以从中选择您想要的内容,并适当考虑 -d 和 -n 选项。