in process 2570, file descriptor 3 is open to /etc/fstab
Теперь откройте другое окно и проверьте подкаталог
fd
процесса с указанным номером:
% ls -l /proc/2570/fd
total 0
lrwx------ 1 samuel samuel 64 Jan 30 01:30 0 -> /dev/pts/2
lrwx------ 1 samuel samuel 64 Jan 30 01:30 1 -> /dev/pts/2
lrwx------ 1 samuel samuel 64 Jan 30 01:30 2 -> /dev/pts/2
lr-x------ 1 samuel samuel 64 Jan 30 01:30 3 -> /etc/fstab
Как
видите, появилась, ссылка 3, которая соответствует дескриптору файла
/etc/fstab
, открытого программой.
Программа может открывать дескрипторы не только файлов, но также сокетов и каналов. В таких случаях адресатом символической ссылки будет строка "socket" или "pipe", а не имя файла либо устройства.
7.2.6. Статистика использования процессом памяти
Файл
statm
содержит список из семи чисел, разделенных пробелами. Каждое число — это счетчик числа страниц памяти, используемых процессом и попадающих в определенную категорию. Соответствующие категории перечислены ниже (в порядке следования счетчиков):
■ общий размер процесса;
■ размер резидентной части процесса;
■ память, совместно используемая с другими процессами (например, загруженные библиотеки или нетронутые страницы, созданные в режиме "копирование при записи");
■ текстовый размер процесса, т.е. размер сегмента кода исполняемого файла;
■ размер совместно используемых библиотек, загруженных процессом;
■ память, выделенная под стек процесса;
■ число недействительных страниц, т.е. страниц памяти, которые были модифицированы программой.
7.2.7. Статистика процесса
Файл
status
содержит всевозможную информацию о процессе, отформатированную в понятном для пользователя виде. Сюда входит идентификатор процесса, идентификатор родительского процесса, реальный и эффективный идентификаторы пользователя и группы, статистика использования памяти, а также битовые маски, определяющие, какие сигналы перехватываются, игнорируются или блокируются.
7.3. Аппаратная информация
В файловой системе
/proc
есть ряд других элементов, позволяющих получить доступ к информации о системных аппаратных средствах. Обычно это интересно лишь системным администраторам, но иногда такая информация используется и в приложениях. Ниже описано несколько наиболее полезных файлов.
7.3.1. Центральный процессор
Как уже говорилось, файл
/proc/cpuinfo
содержит информацию о центральном процессоре (или процессорах, если их больше одного). В поле "processor" перечислены номера процессоров. В случае однопроцессорной системы там будет стоять 0. Благодаря полям "vendor_id", "cpu family", "model" и "stepping" можно точно узнать модель и модификацию процессора. В поле "flags" показано, какие флат процессора установлены. Это самая важная информация. Она определяет, какие функции процессора доступны. Например, флаг "mmx" говорит о том, что поддерживаются расширенные инструкции MMX. [23]
23
В
главе 9, "Встроенный ассемблерный код", рассказывается о том, как задействовать ассемблерные инструкции в Linux-программах.
Большая часть информации, содержащейся в файле
/proc/cpuinfo
, извлекается с помощью ассемблерной инструкции
cpuid
процессоров семейства x86. С помощью этой низкоуровневой инструкции программы могут получать сведения о центральном процессоре. Подробнее узнать об этой инструкции можно в руководстве IA-32 Intel Architecture Software Developer's Manual, Volume 2: Instruction Set Reference, доступном по адресу
http://developer.intel.com/design
.
Последний элемент файла,
bogomips
, характерен для Linux. Это показатель скорости работы процессора в поглощающем цикле (когда программы обращаются к процессору, но не выполняют вычислений). Он не отражает общую производительность процессора.
7.3.2. Аппаратные устройства
В файле
/proc/devices
содержится список старших номеров символьных и блочных устройств, имеющихся в системе. Подробнее об этом рассказывалось в главе 6. "Устройства".
7.3.3. Шина PCI
В файле
/proc/pci
перечислены устройства, подключенные к шине (или шинам) PCI. Сюда входят реальные PCI-платы, а также устройства, встроенные в материнскую плату, плюс графические платы AGP. В каждой строке указан тип устройства, идентификатор устройства и его поставщика, имя устройства (если есть), информация о функциональных возможностях устройства и сведения о ресурсах PCI-шины, используемых устройством
7.3.4. Последовательные порты
Файл
/proc/tty/driver/serial
содержит конфигурационную и статистическую информацию о последовательных портах. Эти порты нумеруются начиная с нуля. [24] Работать с настройками порта позволяет также команда
setserial
, но файл
/proc/tty/driver/serial
, помимо всего прочего, включает дополнительные статистические данные о счетчиках прерываний каждого порта.
Например, следующая строка описывает последовательный порт 1 (COM2 в Windows):
24
В DOS и Windows нумерация последовательных портов начинается с единицы, поэтому порту COM1 соответствует последовательный порт с номером 0 в Linux.
Здесь говорится о том, что последовательный порт оснащен микросхемой UART 16550А, использует порт ввода-вывода 0x218 и прерывание 3 и работает со скоростью 9600 бод. Через этот порт было передано 11 запросов на прерывание и получено 0 таких запросов.
7.4. Информация о ядре
В файловой системе
/proc
есть много элементов, содержащих информацию о настройках и состоянии ядра. Некоторые из них находятся на верхнем уровне файловой системы, а некоторые скрыты в каталоге