Средства работы с файловой системой proc - это утилиты,
использующие возможности, предоставляемые файловой системой /proc
(см. proc(4)). Большинство из них
воспринимает список идентификаторов процессов; они же воспринимают
в качестве идентификатора процесса также значение /proc/nnn,
так что шаблон командного интерпретатора /proc/* можно
использовать для указания всех процессов в системе.
Некоторые из средств работы с proc можно также применять
к файлам core (образы памяти процессов, см.
core(4)); те, что позволяют обрабатывать
эти файлы, могут обрабатывать список либо идентификаторов процессов,
либо имен файлов, либо и тех, и других.
Выдает флаги трассировки /proc, ожидающие и удерживаемые сигналы,
и другую информацию о состоянии /proc для каждого легковесного
процесса (потока, lwp) в каждом процессе.
Выдает список динамически подключаемых библиотек для каждого процесса,
включая разделяемые объекты, явно подключенные с помощью вызова
dlopen(3DL). См.
ldd(1).
Выдает деревья процессов, содержащих процессы с указанными идентификаторами
процессов или идентификаторами пользователей так, что порожденные процессы
сдвигаются вправо по отношению к соответствующим родительским процессам.
Аргумент, состоящий исключительно из цифр, рассматривается как
идентификатор процесса, - в противном случае аргумент считается
регистрационным именем пользователя. По умолчанию выдаются все процессы.
Выдает время выполнения команды, как
утилита time(1), но на базе учета
микросостояния для получения предсказуемой точности. В отличие
от time(1), время работы процессов-потомков команды не учитвается.
Следующие средства работы с файловой системой proc
останавливают целевые процессы по ходу их изучения и выдачи результатов:
pfiles, pldd,
pmap и pstack.
Пока процесс остановлен, он ничего делать не может. Так, например,
если X-сервер проверяется одной из этих утилит, работающих в окне
под управлением этого X-сервера, вся оконная система может оказаться
заблокированной, поскольку утилита будет пытаться выдавать результаты в
окно, которое не может быть обновлено. Взаимную блокировку в таком
случае можно снять из другой системы с помощью утилиты
rlogin(1), прекратив работу утилиты.
Надо быть осторожным при использовании флага -F.
Применение двух управляющих процессов к одной "жертве" может
вызвать хаос. Безопасность гарантирована только если главный
управляющий процесс, обычно, - отладчик, остановил
процесс-жертву и ничего не делает в тот момент, когда к ╨тому
процессу применяется соответствующая утилита для работы с файловой
системой proc.
Некоторые средства работы с файловой системой proc можно также
применять к файлам core, как показано в описании синтаксиса в начале
страницы. Файл core - моментальный снимок состояния процесса, который
создается ядром перед прекращением работы процесса при обработке сигнала
или утилитой gcore(1). Некоторым средствам
работы с файловой системой proc может потребоваться определить
имя выполняемого файла, cоответствующего процессу, образ которого сброшен,
или имена разделяемых библиотек, связанных с этим процессом.
Эти файлы необходимы, например, чтобы получить информацию таблицы символов
для pstack(1). Если соответствующее средство работы с
файловой системой proc не может найти необходимый выполняемый
файл или разделяемую библиотеку, часть символьной информации выдать оно не
сможет. Аналогично, если файл core из одной версии операционной
системы проверяется на другой версии, интерфейс редактирования
связей времени выполнения (run-time link-editor debugging interface -
librtld_db) может не удаться проинициализировать. В этом случае
символьная информация для разделяемых библиотек будет недоступна.