Назад | Перейти на главную страницу

Мониторинг процессов Linux

Есть вариант для 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.