如何正确识别当前占用CPU队列的实时进程并使用ps对其进行计数?我知道有很多像 prio、rtprio、pri、nice 这样的文件,但不知道正确使用。看来我需要使用诸如ps -eo rtprio,prio,cpu,cmd --sort=+rtprio
获取完整列表之类的东西,但这对我来说似乎并不正确,因为很多进程-
在 RTPRIO 列上都有符号。例如,我有一个运行 Oracle Linux 的 48 核系统,并尝试确定以下问题:
- 哪些进程占用了运行队列?他们的数量是多少?
- 如何识别以实时模式运行或具有更高优先级的进程?
答案1
非零 CPU % 进程的列表:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm --sort=+pcpu | awk '$8!=0.0 {print}' | awk 'NR>1'
来数一下他们
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm --sort=+pcpu | awk '$8!=0.0 {print}' | awk 'NR>1' | wc -l
要看到这个不断更新,但它们在一个名为的文件中processes.sh
:
#!/bin/bash
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm --sort=+pcpu | awk '$8!=0.0 {print}' | awk 'NR>1'
并使其可执行chmod +x processes.sh
。现在使用 watch 来运行它以进行实时更新:
watch ./processes.sh