PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 69



62   Глава 1 • Строки

В частности, нам хотелось бы иметь возможность обращаться с полноценными запросами к выводу программы или файлу журнала. Допустим, вы спрашиваете у ps: «Покажи мне все непривилегированные процессы размером больше 10Кб» или «Какие команды работают на псевдоконсолях?»

Программа psg rep умеет делать все это и бесконечно большее, потому что в ней критерии отбора не являются регулярными выражениями; они состоят из полно­ценного кода Perl. Каждый критерий последовательно применяется к каждой строке вывода. В результате выводятся лишь те данные, которые удовлетворяют всем аргументам. Ниже приведены примеры критериев поиска и соответствующие лм командные строки.

•   Строки со словами, заканчивающимися на sh:

% psgrep   '/sh\b/'

•       Процессы с именами команд, заканчивающимися на sh:
% psgrep  'command =" /sh$/'

•       Процессы с идентификатором пользователя, меньшим 10:
% psgrep  'uid < 10'

•       Интерпретаторы с активными консолями:
% psgrep   'command =~   '/"-/'   'tty ne    ">"'

•       Процессы, запущенные на псевдоконсолях:
% psgrep  'tty =' /-[p-t]'

•       Отсоединенные непривилегированные процессы:
% psgrep  'uid && tty eq "?"'

•       Большие непривилегированные процессы:
% psgrep  'size > 10 * 2**10'   'uid ' = 0'

Ниже показаны данные, полученные при последнем вызове psgrep на нашем компьютере. Как и следовало ожидать, в них попал только netscape и его вспомо­гательный процесс:

FLAGS

UID

PID

0

101

9751

100000

101

9752

PPID PRI  NI  SIZE  RSS WCHAN    STA TTY TIME COMMAND

1  0  0 14932 9652 do_select S  p1  0:25 netscape 9751  0  0 10636  812 do_select S  p1  0:00 (dns

helper)

В примере 1.6 приведен исходный текст программы psgrep. Пример 1.6. psgrep

#' /usr/bin/perl -w




Начало  Назад  Вперед



Книжный магазин