观察指定进程的top输出

在 linux 使用 top 输出很多的进程监控信息,大部分都是我们不需要的,我们可以用 top -p <pid> 来指定需要监控的进程,需要注意的是 -p 最多只能支持 20 个 pid , 用逗号隔开。为了观察系统上的微服务运行情况,我写了一段 perl 脚本,他能观察我指定文件夹的二进制程序。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/env perl

my @bins = glob "/opt/nspm/*/bin/*";
my @process ;
for $bin (@bins) {
my @pids = `ps aux | grep $bin | grep -v grep | awk '{print \$2}'`;
for $pid (@pids) {
chomp $pid;
push @process, $pid if $pid > 0;
}
}
if(@process == 0 ) {
exit(0);
}
# top 只支持最大同时指定 20 个进程
system(sprintf "top -c -p %s",(join ',' ,@process[0..19]));