Исполняемые модули надо размещать в каталоге /bin, а если пакет включает в себя документацию, ее надо сохранить в каталоге /doc. При наличии страниц справочной системы, размещать их в /орt/<имя_пакета>/man и использовать подструктуру каталогов, как в /usr/share/man. Специфичные для конкретного пакета библиотеки размещаются в /орt/<имя_пакета>/lib и т. д. Файлы пакета, которые могут изменяться, должны быть установлены в каталоге /var/opt. Хост-специфичные конфигурационные файлы должны быть установлены в /etc/opt.
Каталог /proc – точка монтирования виртуальной файловой системы procfs
Procfs является псевдофайловой системой, обеспечивающей интерфейс с ядром Linux. Эта система позволяет получить доступ к определенным структурам данных ядра, в частности, к списку процессов (отсюда и название). Все эти структуры выглядят как файловая система, и ими можно оперировать обычными средствами работы с файловой системой.
Структура каталогов в /proc:
• /1 – подкаталог процесса, имя каталога соответствует номеру PID-процесса;
• /2;
• /3;
• /4;
• /5;
• /6;
• /7;
• /384;
• /389;
• /403;
• /418;
• /490;
• /5196;
• /bus – каталог содержит специфичную информацию, касающуюся шин (PCI, ISA);
• /driver – здесь сгруппированы различные драйверы;
• /fs – каталог содержит параметры файловых систем;
• /ide – каталог содержит информацию о IDE-подсистеме;
• /irq – маски для управления аппаратными прерываниями;
• /net – сетевая информация;
• /sys – системная информация;
• /sysvipc – информация о SysVIPC-ресурсах (msg, sem, shm);
• /tty – информация о TTY-драйверах;
• apm – расширенная информация управлением питанием;
• cmdline – командная строка ядра операционной системы;
• cpuinfo – информация о микропроцессоре;
• devices – доступные устройства (блочные и символьные);
• dma – используемые каналы DMA;
• execdomains – используемые домены;
• fb – Frame Buffer-устройства;
• filesystems – поддерживаемые файловые системы;
• interrupts – используемые прерывания;
• iomem – карта памяти;
• ioports – используемые порты ввода/вывода;
• isapnp – информация о ISA-устройствах;
• kcore – образ ядра операционной системы;
• kmsg – сообщения ядра;
• ksyms – таблица символов ядра;
• loadavg – средняя загрузка за последние 1, 5 и 15 минут;
• locks – "защелки" ядра;
• mdstat– файл, сообщающий о конфигурации RAID-массива системы;
• meminfo – информация о памяти;
• misc – различная информация, не попавшая не в одну из категорий;
• modules – список загруженных модулей;
• mounts – смонтированные файловые системы;
• mtrr – управление использованием памяти;
• partitions – список разделов, известных системе;
• pci – устаревшая информация о PCI-шине (см. /proc/bus/pci/);
• its – часы реального времени;
• scsi – информация о SCSI-устройствах;
• self – символическая ссылка к каталогу процесса, пытающегося получить информацию из /proc;
• slabinfo – информация о Slab;
• stat – разнообразная статистика;
• swaps – использование разделов и файлов подкачки;
• uptime – время работы системы без перезагрузки;
• version – версия ядра;
• video – BTTV-информация о видеоресурсах.
/proc/№процесса_PID-процесса
Каталог имеет имя, соответствующее номеру PID-процесса. Каждый процесс в системе имеет соответствующий ему каталог в /proc. В этом каталоге обязательно находятся следующие файлы:
• cmdline – файл, содержащий аргументы командной строки процесса;
• cpu – текущий и последний использовавшийся микропроцессор (только для мультипроцессорных систем);
• /cwd – ссылка на текущий рабочий каталог;
• environ – содержит значения переменных окружения;
• ехе – ссылка на исполняемый файл этого процесса;
• /fd – каталог, содержащий все файловые дескрипторы данного процесса;
• maps – карты памяти исполняемых и библиотечных файлов;
• mem – память, занятая этим процессом;
• /root – ссылка на корневой каталог этого процесса;
• stat – статус процесса;
• statm – информация об использовании процессом памяти;
• status – статус процесса в форме, воспринимаемой человеком.
/proc/ide – IDE-устройства, установленные в системе
В каталоге содержится информация обо всех установленных в системе IDE-устройствах, в том числе используемые драйверы.
/proc/net – сетевая информация
В этом каталоге содержится информация, относящаяся к сети. Следующие файлы являются общими как для протокола IPv4, так и IPv6:
• агр – ARP-таблица ядра;
• dev – сетевые устройства со своей статистикой;
• dev_stat – статус сетевого устройства;
• ip_fwchains – связи цепочки Firewall;
• ip_fwnames – имена цепочек Firewall;
• /ip_masq – каталог содержит таблицы маскарадинга [2] ;
• ip_masquerade – главная таблица маскарадинга;
• netstat – сетевая статистика;
• raw – статистика сетевых устройств;
• route – таблица маршрутизации ядра;
• /грс – каталог содержит RPC-информацию;
• rt_cache – кэш маршрутизации;
• snmp – данные SNMP;
• sockstat – статистика сокетов;
• tcp – ТСР-сокеты;
• tr_rif – таблица маршрутизации Token ring RIF;
• udp – UDP-сокеты;
• unix – UNIX-сокеты;
• wireless – данные беспроводного интерфейса (Wavelan и т. п.);
• igmp – IP-адреса, которые хост принимает;
• psched – параметры глобального администратора пакетов;
• netlink – список PF_NETLINK-сокетов;
• ip_mr_vifs – список виртуальных интерфейсов;
• ip_mr_cache – список кэша маршрутизации.
Файлы, приведенные ниже, используются протоколом IPv6:
• udp6 – UDP-сокеты (IPv6);
• tcp6 – ТСР-сокеты (IPv6);
• raw6 – статистика устройств (IPv6);
• igmp6 – IP-адреса, принимаемые хостом (IPv6);
• if_inet6 – список IРv6-интерфейсных адресов;
• ipv6_route – таблица маршрутизации для IPv6;
• rt6_stats – общая статистика IРv6-таблиц маршрутизации;
• sockstat6 – статистика сокетов (IPv6);
• snmp6 – SNMP-данные (IPv6).
/proc/parport – параллельные порты
Каталог содержит информацию обо всех параллельных портах, установленных в системе.
/proc/scsi – SCSI-устройства, установленные в системе
Если в компьютере установлены SCSI-устройства, то должен существовать каталог /proc/scsi. В нем содержится информация обо всех установленных в системе SCSI-устройствах, в том числе используемые драйверы.
/proc/sys – системная информация
Этот каталог содержит файлы, изменением которых можно, не перегружая системы, изменять различные параметры ядра.
/proc/sys/dev – информация, специфическая для устройств
На сегодняшний день поддерживаются только устройства CD-ROM.
/proc/sys/fs – данные файловой системы
Каталог содержит различную информацию о файловой системе.
/proc/sys/kerriel – основные параметры ядра операционной системы
В этом каталоге находятся файлы, с помощью которых можно изменять настройки ядра операционной системы.
/proc/sys/net – сетевая "начинка"
Этот каталог содержит интерфейс по управлению различными сетевыми протоколами. В этом каталоге могут находиться следующие подкаталоги:
• /802 – протокол Е802;
• /appletalk – Appletalk-протокол;
• /ах25 – АХ25;
• /bridge – Bridging;
• /core – основные параметры;
• /decnet – DEC-net;
• /ethernet – Ethernet-протокол;
• /ipv4 – IP версии 4;
• /ipv6 – IP версии 6;
• /ipx – IPX;
• /netrom – NET/ROM;
• /rose – X.25 PLP layer;
• /token-ring – IBM token ring;
• /unix – UNIX domain sockets;
• x25 – протокол X.25.
/proc/sys/sunrpc – удаленные вызовы процедур
Каталог содержит файлы, которые разрешают или запрещают отладку удаленно вызываемых процедур.
/proc/sys/vm – виртуальная подсистема памяти
Файлы в этом каталоге используются для настройки виртуальной подсистемы памяти ядра Linux.
/proc/tty – терминалы
Здесь содержится информация о доступных и используемых терминалах.
Каталог /root – домашний каталог для пользователя root (администратора)
Существенных причин для вынесения домашнего каталога /root в корневой уровень нет. Однако существует практика выделения отдельного раздела для каталога /home, который при аварийных ситуациях может не подмонтироваться. По-видимому, по этой причине каталог /root вынесли на корневой уровень.
Каталог /sbin – системные исполняемые файлы
Утилиты, используемые для системного администрирования, и другие, используемые только администратором (пользователем root), хранятся в каталогах /sbin, /usr/sbin и /usr/local/sbin. Каталог /sbin содержит исполняемые файлы, необходимые для загрузки, восстановления, починки системы в добавление к файлам, находящимся в каталоге /bin. Программы, используемые после монтирования файловых систем, в основном помещаются в каталог /usr/sbin. Административные программы, используемые только на локальной системе, помещаются в каталог /usr/local/sbin.
Обычные пользователи не должны иметь доступа в каталоги /sbin. Если обычный пользователь (не администратор) может запускать команду, она должна находиться в одном из каталогов /bin. В каталоге /sbin должны присутствовать следующие файлы:
• badblocks – утилита для проверки жестких дисков;
• ctrlaltdel – программа для перезагрузки операционной системы;
• dumpe2fs – утилита для работы с файловой системой;
• e2fsck – утилита для проверки файловой системы;
• fastboot – утилита, перезагружающая систему без проверки дисков;
• fasthalt – утилита, останавливающая систему без проверки дисков;
• fdisk – утилита, позволяющая производить различные действия с таблицей разделов (создавать, редактировать, удалять раздел и т. д.);
• fsck – утилита, проверяющая и восстанавливающая файловую систему;
• fsck.* – утилита, проверяющая и восстанавливающая файловую специфичную систему (например, Ext2);
• getty – программа getty;
• halt – команда, останавливающая систему;
• ifconfig – утилита конфигурации сетевого интерфейса;
• init – Init-процесс;
• kbdrate – утилита для настройки клавиатуры;
• lilo – загрузчик операционной системы;
• mke2fs – утилита создания файловой системы;
• mkfs – команда, создающая файловую систему;
• mkfs.* – команда, создающая специфичную файловую систему;
• mkswap – команда, устанавливающая своп-область;
• reboot – команда, перегружающая систему;
• route – утилита для таблицы IP-маршрутизации;
• swapon – утилита, разрешающая свопирование;
• swapoff – утилита, запрещающая свопирование;
• tune2fs – утилита тонкой настройки файловой системы;
• update – демон, периодически сбрасывающий буферы файловой системы.
Каталог /tmp – временные файлы
Каталог должен быть доступен для программ, которые нуждаются во временных файлах.
При загрузке системы файлы, находящиеся в /tmp, должны удаляться (по крайней мере, рекомендуется).
Каталог /usr – иерархия
Каталог /usr – это вторая основная секция файловой системы, разделяемая, только для чтения. В каталоге /usr должны находиться следующие каталоги:
• /bin – содержит большую часть утилит, используемых пользователем;
• /include – файлы заголовков, включаемых в С-программы;
• /lib – библиотеки;
• /local – локальная иерархия;
• /sbin – содержит не жизненно необходимые системные исполняемые файлы;
• /share – архитектурно-независимые данные;
• /X11R6 – X Window System, версия 11, выпуск 6;
• /games – игры и образовательные программы;
• /src – исходные коды.
/usr/bin – пользовательские программы
В каталоге содержится большинство программ, предназначенных для пользователей. В частности, здесь должны находиться следующие программы (если установлены соответствующие пакеты):
• perl – интерпретатор языка Perl;
• python – интерпретатор языка Python;
• tclsh – интерпретатор Tel;
• wish – простая оконная оболочка Tcl/Tk;
• expect – программа для интерактивного диалога.
/usr/include – каталог для стандартных include-файлов
В этом каталоге хранится большинство включаемых файлов, используемых компилятором C/C++.
/usr/lib – библиотеки для программирования и пакетов
Каталог содержит объектные файлы, библиотеки и другие файлы, которые не используются напрямую пользователем или скриптами командных оболочек. Если программа создает подкаталог в /usr/lib, все архитектурно-зависимые данные должны помещаться в этот каталог. Для примера: подкаталог /рег15 содержит в себе модули и библиотеки для Perl 5.
/usr/local – локальная иерархия
Каталог предназначен для системного администратора под установку локального программного обеспечения. Это необходимо для предотвращения перезаписи программного обеспечения при обновлении системного программного обеспечения. Содержит следующие каталоги:
• /bin – локальные исполняемые файлы;
• /games – локальные исполняемые файлы игр;
• /include – локальные файлы С-заголовков;
• /lib – локальные библиотеки;
• /sbin – локальные системные исполняемые файлы;
• /share – локальная архитектурно-независимая иерархия;
• /sre – локальный исходный код.
/usr/sbin – не жизненно необходимые стандартные системные программы
Каталог содержит любые не жизненно необходимые для функционирования системы исполняемые файлы, используемые исключительно системным администратором. Программы и утилиты, используемые при восстановлении работоспособности системы, должны находиться в каталоге /sbin.
/usr/share – архитектурно-независимые данные
Каталог предназначен для всех архитектурно-независимых файлов данных, предназначенных только для чтения (неизменяемых). Содержит следующие каталоги:
• /diet – списки слов (словари);
• /doc – разнообразная документация;
• /games – неизменяемые файлы данных для /usr/games;
• /info – основной каталог информационной системы GNU;
• /locale – информация для локализации системы;
• /man – файлы справочной системы;
• /misc – разнообразные архитектурно-независимые данные;
• /terminfo – каталог для базы данных terminfo;
• /zoneinfo – информация и конфигурация временной зоны (Timezone).
Любая программа или пакет, который содержит или требует данных, не нуждающихся в модификации должны хранится в /usr/share (или /usr/local/share, если программное обеспечение установлено локально).
/usr/share/dict – списки слов (словари)
Каталог содержит словари, находящиеся в системе. Традиционно в этом каталоге находится только файл с английскими словами, которые используются программой look и многими программами проверки правописания. В этот каталог можно установить свои файлы, например, с русскими словами.
/usr/share/man – страницы справочной системы
Каталог предназначен для хранения данных справочной системы. Вся справочная информация разделена на восемь больших тем, для каждой существует свой отдельный каталог – от /man1 до /man8. Содержит следующие каталоги:
• /man1 – справочные страницы, описывающие доступные пользователям программы;
• /man2 – раздел, описывающий все системные вызовы (для взаимодействия с ядром);
• /man3 – библиотечные функции и подпрограммы. Описывает программные библиотеки, напрямую не взаимодействующие с ядром операционной системы. Этот и второй разделы справочной системы представляют интерес только для программистов;
• /man4 – описывает специальные файлы, осуществляющие функции драйверов и сетевой поддержки в системе. В основном эти файлы находятся в каталоге /dev;
• /man5 – документация по множеству файловых форматов;
• /man6 – содержится документация по разнообразным играм;
• /man7 – разное. Содержит документацию, которую трудно классифицировать;
• /man8 – системное администрирование. Программы, используемые системным администратором для администрирования и сопровождения системы.
Система справочной информации должна поддерживать несколько языков одновременно, поэтому для исключения конфликтов в каталоге /usr/share/man файлы справочной системы принято хранить следующим образом:
• для каждого языка, установленного в системе (locale, локаль), в каталоге /usr/share/man создается подкаталог, носящий имя своей локали;
• в этом подкаталоге создаются каталоги /man<раздел>, причем только те, в которых есть справочная информация;
• в каталоге /man<раздел> хранятся справочные файлы, отдельные для каждой установленной программы, причем стандартом de-facto является то, что справочные файлы хранятся в архивированном виде (никто, однако, не запрещает хранить их в распакованном виде, но для экономии места на жестком диске их упаковывают).
Программа man при обращении к ней с целью получения справочной информации по какой-то программе сначала пытается получить справочную информацию на языке, соответствующем текущей локали. Если ей это не удается, то берется информация, хранящяяся в /шг/811аге/man/man<раздел>. По умолчанию в этих каталогах содержится англоязычная справочная информация.
Наименование языковых подкаталогов в /usr/share/man основывается на приложении Е стандарта POSIX 1003.1, который описывает строку-идентификатор локали. Строка-идентификатор локали согласно этому стандарту имеет вид:
<язык>[_<территория>][.<кодовая страница символов>][,<версия>]
• поле <язык> берется из стандарта ISO 639. Это должны быть два символа исключительно в нижнем регистре;
• поле <территория> должно быть двухсимвольным кодом только в верхнем регистре (согласно стандарту ISO 3166);
• поле скодовая страница символов> должно быть представлено в стандартном описании кодовой страницы. Если скодовая страница символов> содержит числовую спецификацию, она соответствует интернациональному стандарту, описывающему эту страницу;
• поле <версия> рекомендуется не использовать без крайней необходимости. Реальное его применение – например, для страны, имеющей один язык и кодировку, но разные диалекты.
Пример формирования каталогов локализованной справочной системы приведен в табл. 5.3.
Таблица 5.3. Пример формирования каталогов локализованной справочной системы