Библиотека сайта rus-linux.net
Информация о процессах |
||
---|---|---|
Глава 10. Файловая система /proc |
Информация о процессах
Если
вы выведете список содержимого каталога /proc
,
вы увидите много каталогов, именами которых являются номера. Эти
каталоги содержат информацию о всех процессах в системе, запущенных в
данный момент:
$ ls -d /proc/[0-9]* /proc/1/ /proc/302/ /proc/451/ /proc/496/ /proc/556/ /proc/633/ /proc/127/ /proc/317/ /proc/452/ /proc/497/ /proc/557/ /proc/718/ /proc/2/ /proc/339/ /proc/453/ /proc/5/ /proc/558/ /proc/755/ /proc/250/ /proc/385/ /proc/454/ /proc/501/ /proc/559/ /proc/760/ /proc/260/ /proc/4/ /proc/455/ /proc/504/ /proc/565/ /proc/761/ /proc/275/ /proc/402/ /proc/463/ /proc/505/ /proc/569/ /proc/769/ /proc/290/ /proc/433/ /proc/487/ /proc/509/ /proc/594/ /proc/774/ /proc/3/ /proc/450/ /proc/491/ /proc/554/ /proc/595/ |
Обратите
внимание, что как пользователь, вы (рассуждая логически) можете
вывести информацию только о своих собственных процессах, но не других
пользователей. Поэтому давайте станем root
'ом
и посмотрим, какая информация доступна для процесса 127:
$ su Password: $ cd /proc/127 $ ls -l total 0-9 -r--r--r-- 1 root root 0 Dec 14 19:53 cmdline lrwx------ 1 root root 0 Dec 14 19:53 cwd -> // -r-------- 1 root root 0 Dec 14 19:53 environ lrwx------ 1 root root 0 Dec 14 19:53 exe -> /usr/sbin/apmd* dr-x------ 2 root root 0 Dec 14 19:53 fd/ pr--r--r-- 1 root root 0 Dec 14 19:53 maps| -rw------- 1 root root 0 Dec 14 19:53 mem lrwx------ 1 root root 0 Dec 14 19:53 root -> // -r--r--r-- 1 root root 0 Dec 14 19:53 stat -r--r--r-- 1 root root 0 Dec 14 19:53 statm -r--r--r-- 1 root root 0 Dec 14 19:53 status $ |
Каждый из каталогов содержит одинаковые пункты: Вот краткое описание некоторых из них:
cmdline
: этот (псевдо-) файл содержит полную командную строку, использованную для вызова процесса. Он не отформатирован: между программой и ее аргументами нет пробелов, а в конце строки нет разделителя строки. Чтобы просмотреть его, вы можете использовать: perl -ple 's,\00, ,g' cmdline.cwd
: эта символическая ссылка указывает на текущий рабочий каталог процесса (следует из имени).environ
: этот файл содержит все переменные окружения, определенные для этого процесса, в видеПЕРЕМЕННАЯ=значение
. Как и вcmdline
вывод вообще не отформатирован: нет разделителей строк для отделения различных переменных, и в конце нет разделителя строки. Единственным решением для его просмотра будет: perl -pl -e 's,\00,\n,g' environ.exe
: эта символическая ссылка указывает на исполняемый файл, соответствующий запущенному процессу.fd
: этот подкаталог содержит список файловых дескрипторов, открытых в данный момент процессом. Смотрите ниже.maps
: когда вы выводите содержимое этого именованного канала (при помощи команды cat, например), вы можете увидеть части адресного пространства процесса, которые в текущий момент распределены для файла. Вот эти поля (слева направо): адресное пространство, связанное с этим распределением; разрешения, связанные с этим распределеним; смещение от начала файла, где начинается распределение; старший и младший номера (в шестнадцатиричном виде) устройства, на котором находится распределенный файл; номер inode файла; и, наконец, имя самого файла. Если устройство обозначено как 0 и отсутствует номер inode или имя файла - это анонимное распределение. Смотрите mmap(2).-
root
: эта символическая ссылка указывает на корневой каталог, используемый процессом. Обычно это будет/
, однако рекомендуем вам просмотреть chroot(2). status
: этот файл содержит разнообразную информацию о процессе: имя исполняемого файла, его текущее состояние, его PID и PPID, его реальные и эффективные UID и GID, его использование памяти и другие данные. Обратите внимание, что файлыstat
иstatm
теперь устарели. Содержавшаяся в них информация теперь хранится вstatus
.
Если мы выведем
список содержимого каталога fd
для процесса 127, мы получим следующее:
$ ls -l fd total 0 lrwx------ 1 root root 64 Dec 16 22:04 0 -> /dev/console l-wx------ 1 root root 64 Dec 16 22:04 1 -> pipe:[128] l-wx------ 1 root root 64 Dec 16 22:04 2 -> pipe:[129] l-wx------ 1 root root 64 Dec 16 22:04 21 -> pipe:[130] lrwx------ 1 root root 64 Dec 16 22:04 3 -> /dev/apm_bios lr-x------ 1 root root 64 Dec 16 22:04 7 -> pipe:[130] lrwx------ 1 root root 64 Dec 16 22:04 9 -> /dev/console $ |
На самом деле это список файловых дескрипторов, открытых процессом. Каждый открытый дескриптор представлен в виде символической ссылки, где имя - это номер дескриптора, который указывает на файл, открытый этим дескриптором[25]. Обратите внимание на разрешения симлинков: это - единственное место, где они имеют смысл, поскольку они представляют собой разрешения, с которыми был открыт файл, соответствующий дескриптору.
[25] Если вы помните, о чем говорилось в разделе «Перенаправления и каналы», тогда вы должны знать, что означают дескрипторы 0, 1 и 2.
Глава 10. Файловая система /proc |
Информация об аппаратном обеспечении |