在 UNIX 中从顶部提取 PID



我想从顶部提取PID以获得所需的进程和用户。因此,我可以使用此命令top -u meh获得一致的更新列表,但是如何从此处为用户meh提取java的PID并获得以下结果?

$top -u meh 
34249 meh     20   0   36.7g  11.7g   2240 S  97.0  1.5   2594:00 java
36864 meh     20   0   37.7g  12.2g   2232 S  97.0  1.6   2588:58 java
33607 meh     20   0   37.9g  12.2g   2244 S  96.7  1.6   2584:22 java
17027 meh     20   0  163228   3420   1596 R   1.0  0.0   0:00.10 top
617 meh     20   0  117872    316    312 S   0.0  0.0   0:00.12 bash
1626 meh     20   0  117872    236    236 S   0.0  0.0   0:00.10 bash
2056 meh     20   0  130624    276    276 S   0.0  0.0   0:00.06 screen
2057 meh     20   0  117892    312    308 S   0.0  0.0   0:00.08 bash
3912 meh     20   0  117892    248    248 S   0.0  0.0   0:00.07 bash
4516 meh     20   0  117872    236    236 S   0.0  0.0   0:00.09 bash
7166 meh     20   0  117872    312    308 S   0.0  0.0   0:00.09 bash

结果:

34249 36864 33607

这是它的基线,如果你想要特定的用户,你可以添加更多的 grep 和管道

top -p $(ps -fea|grep -i java |grep -v grep|cut -d' ' -f3 | tr 'n' ','|  head --bytes -1 )
ps -aux | grep 'meh' | grep 'java' | awk '{print $2}'

首先使用ps打印所有进程 首先grep按 MEH 列出所有进程, 第二个grep仅列出包含 Java 的那些(在上一个集合中( 然后打印第二列,awk

编辑: 如果您不想匹配包含java关键字的其他进程,您可以告诉 ps 您要查找哪个程序:

ps -C java -o user,pid | grep 'meh' | awk '{print $2}'

最新更新