Посмотрите на модуль Proc :: ProcessTable , который возвращает довольно мало информации о процессах в системе. Вызовите метод «fields», чтобы получить список деталей, которые можно извлечь из каждого процесса.
Недавно я обнаружил вышеупомянутый модуль, который почти заменил модуль Process, который я написал при написании программы Perl kill для Linux. Вы можете посмотреть мой сценарий здесь .
Его можно легко расширить, чтобы извлечь дополнительную информацию из команды ps. Например, метод ' getbycmd ' возвращает список pid, чей вызов командной строки соответствует переданному аргументу. Затем вы можете получить сведения о конкретном процессе, вызвав ' getdetail ', передав ему PID следующим образом:
my $psTable = Process->new();
# Get list of process owned by 'root'
for my $pid ( $psTable->getbyuser("root") ) {
$psDetail = $psList->getdetail( $pid );
# Do something with the psDetail..
}