Process
如何對 ps 輸出進行排序以查找程序實時優先級並辨識程序目前佔用的執行隊列
如何正確辨識目前佔用CPU隊列的實時程序並使用ps統計它們?我知道有一堆文件,如 prio、rtprio、pri、nice,但不知道正確使用。似乎我需要使用類似
ps -eo rtprio,prio,cpu,cmd --sort=+rtprio
獲取完整列表的東西,但對我來說似乎並不正確,因為很多程序-
都在 RTPRIO 列上簽名。例如,我有一個執行 Oracle Linux 的 48 核系統,並嘗試確定以下問題:
- 哪些程序佔用了執行隊列?他們的數量是多少?
- 如何辨識以實時模式執行或具有更高優先級的程序?
非零 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