使用 AWK 按 CPU 使用情况查找进程 ID (Ubuntu)

使用 AWK 按 CPU 使用情况查找进程 ID (Ubuntu)

我运行一个命令来尝试列出 PID 及其 CPU 使用情况。我在用ps -ef

有没有(更好的)方法来使用 来做到这一点top?另外,我对我的发言有疑问awk。我的变量$vGRP是正则表达式。如何测试是否$2$vGRP?如果是这样,这可以切断我的一个grep电话。

我最初将其写为“一行”,我可以将其粘贴到终端会话中,因此请原谅格式:

clear;
printf "Please enter process name: "; read vPNAME;
for i in $(pgrep "$vPNAME");
  do vGRP="$vGRP$i|";
done;
vGRP="${vGRP::-1}";
printf "Seaching for processes: $vGRP\n  PID\tUSAGE\n-------\t-------\n";
ps -ef | egrep "$vGRP" | egrep "$vPNAME" | awk '{print $2, "\t", $4 }';
vGRP=""; vPNAME="";

理想情况下,我想要一些更干净的东西,但我不太熟悉bash,如果可能的话,我想awk检查字符串中的字段 2 vGRP

ps -ef | awk -v vGRP="$vGRP" '$vGRP~/$2/ {print $2, "\t", $4 }';

但是,这不提供输出,因为我假设它awk不读取外部变量。

答案1

显然是重新发明轮子。

ps -o pid,pcpu -p $(pgrep "$vPNAME")

相关内容