psmisc: да разгледаме от близо стандартният пакет
Публикувано от tonitochev на април 4, 2008
Оригинал: «psmisc: a closer look to a standard package»
Източник:http://citkit.ru/articles/699/
Автор: Адриан фон Биддер (Adrian von Bidder)
Превод на руски:: Алексей Бешенов http://beshenov.ru
Превод: инж. Тони Тошев
Пакетът psmisc е инсталиран практически във всички системи Debian и Ubuntu и съдържа няколко малки програми, свързани с управление на Unix процесите: pstree, killall, fuser и peekfd. Следва кратко описание на тези полезни инструменти. Разбира се, всички познават killall и даже pstree, в пакета също така са fuser и peekfd, които за мен до скоро бяха новост.
killall е толкова ужасен, както и името му: той убива всички процеси с указаното име. По подразбиране се използва SIGTERM, но, разбира се, може да изпратите и други сигнали. Също така има опции за определяне на процеси с регулярни изрази или по групи. Обикновено аз използвам това за унищожаване на елементи на KDE чрез команда от рода на:
$ killall kio_imap4
Това се налага да го правя, защото при KMail има някои проблеми при работа с моя IMAP-сървър.
Добър поглед на това, какво е стартирано в системата, дава pstree. Ето част от изхода на програмата при мен:
$ pstree
init─┬─NetworkManager───2*[{NetworkManager}]
├─NetworkManagerD
├─acpid
├─hald───hald-runner─┬─hald-addon-acpi
│ ├─hald-addon-cpuf
│ ├─hald-addon-dell
│ ├─hald-addon-inpu
│ └─hald-addon-stor
├─kdeinit─┬─artsd
│ ├─2*[kio_file]
│ ├─kio_http
│ ├─3*[kio_imap4]
│ ├─kioexec───wfica.sh───wfica
│ ├─klauncher
│ ├─konqueror
│ ├─konsole───bash─┬─pstree
│ │ └─xchat───{xchat}
│ └─kwin
├─kdesktop───lineakd───2*[{lineakd}]
├─kdm─┬─Xorg
│ └─kdm───startkde───kwrapper
└─sshd
Опциите на pstree включват показване идентификаторите на процесите, потребителите и контекстът за безопасност SE Linux.
Fuser позволява да се установи, кой процес използва определен файл, например:
$ fuser -v /home/avbidder/.xsession-errors
USER PID ACCESS COMMAND
/home/avbidder/.xsession-errors:
avbidder 4409 F.... startkde
avbidder 4533 F.... kdeinit
avbidder 4536 F.... dcopserver
avbidder 4538 F.... klauncher
avbidder 4540 F.... kded
avbidder 4547 F.... kwrapper
avbidder 4549 F.... ksmserver
avbidder 4550 F.... kwin
avbidder 4552 F.... kdesktop
avbidder 4554 F.... kicker
avbidder 4562 F.... artsd
avbidder 4567 F.... kmix
avbidder 4568 F.... konsole
avbidder 4572 F.... beagled
avbidder 4574 F.... lineakd
avbidder 4579 F.... knetworkmanager
avbidder 4680 F.... knotify
avbidder 4916 F.... kio_uiserver
avbidder 5706 F.... akregator
avbidder 5708 F.... kttsd
avbidder 5742 F.... kio_file
avbidder 5864 F.... beagled-helper
avbidder 6939 F.... konqueror
avbidder 7076 F.... konqueror
avbidder 7185 F.... kmail
avbidder 7696 F.... kio_imap4
Също така fuser може да праща сигнали към тези програми, така че може да ги убиете с помощта на :
fuser -k /home/avbidder/.xsession-errors
(по подразбиране се ползва SIGKILL, но това може да го променяте.)
Докато fuser е обичайният инструмент на системният администратор, peekfd осъществява по – дълбок контрол: той позволява да се види какво се случва с файловите дескриптори на процеса. Обърнете внимание на това, че peekfd го няма в Etch, необходимо е psmisc от Lenny или еще по ново.
Ако стартирате в терминал peekfd, командата ще прегледа всички дескриптори на процесите и ще изведе приблизително това:
$ peekfd 7808 writing fd 1: foo bar
Тук 7808 — просто cat >/dev/null в друг прозорец на терминала, и аз пиша там «foo bar».
И така, надявам се, че тази статия ще ви помогне да обърнете внимание на пакети, които сте инсталирали още от времето на Potato , но не сте се запознали по обстойно с тях..