Мы вкратце рассмотрим четыре различных
Управление процессами в 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-функций - он завершит работу процесса с особенной предвзятостью.