Perl для системного администрирования

       

Мы вкратце рассмотрим четыре различных



Управление процессами в NT/2000

Мы вкратце рассмотрим четыре различных способа работы с процессами в NT/2000, поскольку каждый из них открывает перед нами двери к увлекательным возможностям, лежащим за пределами нашего обсуждения. Сначала мы остановимся на двух задачах: поиске всех запущенных процессов и завершении работы некоторых из них.

Используем Microsoft Resource Kit

В главе 3 «Учетные записи пользователей» упоминалось, что NT Resource Kit является отличным источником для сценариев и информации. Из этого пакета будут использоваться две программы: pulist.exe и kill.exe. Первая выводит список процессов, вторая- «убивает» их. В этом пакете есть еще одна утилита tlist.exe, похожая на pulist.exe, которая может вывести все процессы в списке, удобном для чтения, но ей не достает некоторых возможностей pulist.exe. Например, pulist.exe может вывести список процессов не только текущего, но и другого компьютера.

Вот фрагмент из вывода командыpulist:

Process PID User

TAPISRV.EXE 119 NT AUTHORITY\SYSTEM

TpChrSrv.exe 125 NT AUTHORITY\SYSTEM

RASMAN.EXE 131 NT AUTHORITY\SYSTEM

mstask.exe 137 NT AUTHORITY\SYSTEM

mxserver.exe 147 NT AUTHORITY\SYSTEM

PSTORES.EXE 154 NT AUTHORITY\SYSTEM

NDDEAGNT.EXE 46 OMPHALOSKEPSIS\Administrator

explorer.exe 179 OMPHAlOSKEPSIS\Administrator

SYSTRAY.EXE 74 OMPHALOSKEPSIS\Administrator

cardview.exe 184 OMPHAlOSKEPSIS\Administrator

ltmsg.exe 167 OMPHALOSKEPSIS\Administrator

daemon.exe 185 OMPHALOSKEPSIS\Adrdinistrator

Применять pulist.exe из Perl очень просто. Вот один из способов:

$pulistexe = "\\bin\\PULIST.EXE":

местоположение программы open

(PULIST. "$pulistexe|")

"Невозможно выполнить Spulistexe.S! ''

scalar <PULIST>: и удаляем первую строку заголовка

while(defined($_=<PULIST>)){

print "$pranie.$pid:$puser\n":

close(PULIST):

Вторая упомянутая программа - это kill.exe. Ее тоже просто использовать. В качестве аргумента она Принимает либо идентификатор процесса, либо часть имени задачи. В целях безопасности я рекомендую использовать идентификаторы процессов, потому что иначе очень легко убить не тот процесс, который нужно.

Программа kill.exe использует два различных способа завершения работы процессов. Один из них - это так называемая «вежливая смерть»: kill.exe <process id> попросит подтверждения на завершение работы процесса. Но если добавить к командной строке ключ //, действия kill.exe /f <process id> будут скорее напоминать манеру истинных Perl-функций - он завершит работу процесса с особенной предвзятостью.

Содержание раздела