Есть вариант для linux top
команда, где я могу фильтровать процессы по имени?
Например, я хочу отслеживать только процессы python (их несколько), и я хотел бы сделать что-то вроде top -option "python"
или что-то вроде того.
Если вам нужна информация о процессах, ответ всегда ps
Он прост, но у него смехотворное количество опций.
Попробуй это:
ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10
Должен дать вам 10 лучших по использованию процессора.
Это приблизительно соответствует выходу top
:
watch 'ps axo pid,user,pri,nice,vsz,rsz,size,s,pcpu,pmem,time,cmd|grep "[p]ython\|PID USER"'
Вы всегда можете использовать команду "top | grep python", но я предполагаю, что вам нужно что-то более динамичное.
Мои навыки Perl являются базовыми, но чтобы получить реальный топ, отфильтрованный по имени, сохраните этот код в файл с именем topn.pl:
#!/usr/bin/perl
shift @ARGV;
$name = shift @ARGV;
@pids = `/bin/ps -eo pid,user,args | /bin/grep $name | /bin/grep -v grep | /usr/bin/tr -s " " `;
$arg = "";
foreach (@pids) {
$_ =~ /^\s([0-9]+)\s/;
$pid = $1;
$arg .= " p $pid " if $pid != "";
}
exec("/usr/bin/top $arg @ARGV");
Использование: topn.pl -n FOO c 2
где FOO - это имя процесса, который должен быть grep. Остальные аргументы передаются наверх.
Top принимает в качестве аргументов не более 20 PID.