Основные каталоги файловой системы Unix

В UNIX строится единая каталоговая структура для всех носителей, и единственный корневой каталог этой структуры обозначается символом "/". В эту единую каталоговую структуру можно подключить любое число каталогов, физически расположенных на разных носителях (как говорят, "смонтировать файловую систему" или "смонтировать носитель").

Текущий каталог - это каталог, в котором в данный момент находится пользователь. При наличии прав доступа, пользователь может перейти после входа в систему в другой каталог. Текущий каталог обозначается точкой (.); родительский каталог, которому принадлежит текущий, обозначается двумя точками (..).

Таблица 1. Основные каталоги

Каталог Подкаталоги Назначение
/bin   Этот каталог содержит в основном готовые к исполнению программы, большинство из которых необходимы во время старта системы (или в однопользовательском системном режиме, используемом для отладки). Здесь хранится значительное количество общеупотребительных команд Unix
/boot   Содержит основные постоянные файлы для загрузки системы, в частности загружаемое ядро. Файлы из этого каталога нужны только во время загрузки системы
/dev   Каталог специальных файлов или файлов устройств (рассматривается ниже)
/etc   Этот каталог и его подкаталоги содержат большинство данных, необходимых для начальной загрузки системы и основные конфигурационные файлы. В /etc находятся, например, файл inittab, определяющий загружаемую конфигурацию, и файл паролей пользователей passwd. Часть конфигурационных файлов может находиться и в /usr/etc. Каталог /etc не должен содержать двоичных файлов (их следует перенести в /bin или /sbin). Ниже приводится назначение основных (но далеко не всех!) подкаталогов каталога /etc
  /etc/rc.d Этот подкаталог содержит файлы, которые используются в процессе начальной загрузки системы.
  /etc/skel Когда создается новый пользователь и account для него, то файлы из этого каталога копируются во вновь созданный домашний каталог пользователя
/home   Обычно в этом каталоге находятся домашние каталоги пользователей
/lib   Этот каталог содержит разделяемые библиотеки функций, необходимых компилятору языка C и модули (драйверы устройств). Даже если в системе не установлен компилятор языка C, разделяемые библиотеки необходимы, поскольку они используются многими прикладными программами. Они загружаются в память по мере необходимости выполнения каких-то функций, что позволяет уменьшить объем кода программ - в противном случае один и тот же код многократно повторялся бы в различных программах
/lost+found   Этот каталог используется при восстановлении файловой системы командой fsck. Если fsck обнаруживает файл, родительский каталог которого определить невозможно, она помещает такой файл в каталог /lost+found. Поскольку родительский каталог потерян, то таким файлам присваиваются имена, совпадающие с номерами их индексных дескрипторов
/mnt   Это точка монтирования для временно монтируемых файловых систем. Если на компьютере запускается поочередно Unix и MS DOS, то этот каталог обычно используется, чтобы монтировать файловую систему MS DOS. Если вы имеете привычку монтировать несколько дополнительных носителей, например, дискеты, CD-ROM, дополнительный жесткий диск и т. д., то можно создать в нем соответственно дополнительные подкаталоги для каждого носителя
/proc   Это точка монтирования для файловой системы proc, которая обеспечивает информацию о выполняющихся процессах, ядре, оборудовании вычислительной установки и т. д. Это псевдо-файловая система, подробности о которой можно узнать по команде man 5 proc. Специальные файлы из этого каталога используются для получения и передачи данных ядру
/root   Это домашний каталог суперпользователя. Обратите внимание на то, что он расположен не там, где располагаются личные каталоги остальных пользователей (в /home)
/sbin   Подобно каталогу /bin содержит в основном исполняемые файлы - программы и утилиты ОС, используемые в процессе загрузки и запускаемые системным администратором. В стандарте FHS говорится, что в этот каталог надо помещать те исполняемые файлы, которые используются после успешного подключения файловой системы /usr. Минимальное содержимое этого каталога включает программы clock, getty, init, update, mkswap, swapon, swapoff, halt, reboot, shutdown, fdisk, fsck.*, mkfs.*, lilo, arp, ifconfig, route
/tmp   Каталог для временных файлов. В любой момент суперпользователь может удалить файлы из этого каталога без большого ущерба для остальных пользователей. Однако, не стоит удалять файлы из этого каталога, если вам не стало ясно, что конкретный файл или группа файлов мешают продолжению продуктивной работе на машине. Система сама периодически очищает этот каталог, поэтому не следует хранить тут файлы, которые вам могут понадобиться в дальнейшем
/usr   Этот каталог огромен и его структура в основном повторяет структуру корневого каталога. В его подкаталогах находятся все основные приложения. В соответствии со стандартом FHS рекомендуется выделять для этого каталога отдельный раздел диска или вообще располагать его на сетевом диске, общем для всех компьютеров в сети. Такой раздел или диск монтируют только для чтения и располагают в нем общие конфигурационные и исполняемые файлы, документацию, системные утилиты и библиотеки, а также включаемые файлы (файлы типа include)
/var   Этот каталог содержит файлы, в которых сохраняются различные переменные данные, определяющие конфигурацию некоторых программ при следующем запуске или временно сохраняемую информацию, которая будет использоваться позже в ходе текущего сеанса. Объем данных в этом каталоге может сильно изменяться, поскольку он содержит, например, файлы протоколов (логи), файлы спулинга и блокировки (locking), временные файлы и т. д.
  /var/adm Содержит учетную и диагностическую информацию, необходимую системному администратору
  /var/backups Этот каталог используется, чтобы сохранить резервную копию важных системных файлов
  /var/lock Здесь содержатся управляющие файлы системы, которые используются для резервирования использования тех или иных ресурсов системы
  /var/log Различные файлы протоколов (логи)
  /var/run Переменные файлы времени выполнения различных программ. Они содержат идентификаторы процессов (PIDs) и записывают текущую информацию (utmp). Файлы в этом каталоге обычно очищаются во время загрузки системы
  /var/spool Файлы различных программ, поставленные в очередь на обслуживание.
  • /var/spool/at - Файлы заданий, запущенных посредством команды at.
  • /var/spool/cron - Файлы системы cron.
  • /var/spool/lpd - Файлы, ожидающие вывода на печать.
  • /var/spool/mail - Пользовательские почтовые ящики.
  • /var/spool/news - Файлы системы news.
  • /var/spool/uucp - Файлы системы uucp
  /var/tmp Временные файлы




Файлы физических устройств

Как уже говорилось, с точки зрения ОС Unix, все подключаемые к компьютеру устройства (жесткие и съемные диски, терминал, принтер, модем и т. д.), представляются файлами. Если, например, надо вывести на экран какую-то информацию, то система как бы производит запись в файл /dev/tty01.

Физические устройства бывают двух типов: символьными (или байт-ориентированными) и блочными (или блок-ориентированными). Различие между ними состоит в том, как производится считывание и запись информации в эти устройства. Взаимодействие с символьными устройствами производится посимвольно, в режиме потока байтов. К таким устройствам относятся, например, терминалы. На блок-ориентированных устройствах информация записывается (и, соответственно, считывается) блоками. Примером устройств этого типа являются жесткие диски. На диск невозможно записать или считать с него один байт: обмен с диском производится только блоками.

Взаимодействием с физическими устройствами в Unix управляют драйверы устройств, которые либо встроены в ядро, либо подключаются к нему как отдельные модули. Для взаимодействия с остальными частями операционной системы каждый драйвер образует коммуникационный интерфейс, который выглядит как файл. Большинство таких файлов для различных устройств как бы "заготовлены заранее" и располагаются в каталоге /dev.

Таблица 2. Основные специальные файлы
Имя Значение
/dev/console Системная консоль, т. е. монитор и клавиатура, физически подключенные к компьютеру
/dev/hd Жесткие диски с IDE-интерфейсом. Устройство /dev/hda1 соответствует первому разделу на первом жестком диске (/dev/hda), т. е. на диске, подключенном как Primary Master
/dev/sd Жесткие диски с SCSI-интерфейсом
/dev/fd Файлы дисководов для гибких дисков. Первому дисководу соответствует /dev/fd0, второму /dev/fd1
/dev/tty Файлы поддержки пользовательских консолей. Название сохранилось с тех пор, когда к системе UNIX подключались телетайпы в качестве терминалов. В Unix эти файлы устройств обеспечивают работу виртуальных консолей (переключаться между которыми можно с помощью <Alt>+<F1> - <Alt>+<F6>)
/dev/pty Файлы поддержки псевдо-терминалов. Применяются для удаленных рабочих сессий с использованием telnet
/dev/ttS Файлы, обеспечивающие работу с последовательными портами. /dev/ttS0 соответствует COM1 в MS-DOS, /dev/ttS1 - COM2. Если ваша мышь подключается через последовательный порт, то /dev/mouse является символической ссылкой на соответствующий /dev/ttSN
/dev/cua Специальные устройства для работы с модемами
/dev/null Это устройство - просто черная дыра. Все, что записывается в /dev/null, навсегда потеряно. На это устройство можно перенаправить вывод ненужных сообщений. Если /dev/null используется как устройство ввода, то оно ведет себя как файл нулевой длины

Каждому типу устройств в системе может соответствовать несколько файлов устройств. Поэтому файлы устройств характеризуются двумя номерами: старшим и младшим. Старший номер устройства говорит ядру о том, к какому драйверу относится данный файл, а младший номер показывает, к какому именно устройству данного типа следует обращаться.

Для файлов устройств команда ls -l вместо размера файла выдает старший и младший номера данного устройства.

Изучите список каталогов верхнего уровня

· /etc/

В каталоге /etc содержатся системные конфигурационные файлы. Все эти файлы - текстовые.

· /usr/

Каталог /usr является главным каталогом для хранения приложений. Все бинарные файлы в этом каталоге не требуются для загрузки или обслуживания системы, поэтому иерархия /usr может, а часто так и есть, размещаться на отдельной файловой системе. Вследствие его (обычно) большого размера, /usr имеет свою собственную иерархию подкаталогов. Следует упомянуть каталоги /usr/share/doc и /usr/share/man, которые соответственно содержат документацию к приложениями и системные страницы руководств.

· /dev/ и /devices/

В этих каталогах находятся специальные файлы типов b и c, представляющие собой устройства компьютера. Спецфайлы в каталоге /devices организованы по принципу размещения устройств на системной шине компьютера.

"Устройство" в UNIX понимается двояко. С одной стороны - это внешнее устройство, то есть некая аппаратная часть компьютера, которая занимается обработкой или хранением данных. Жесткий диск, видеоадаптер, сетевой интерфейс, последовательный порт - все это примеры внешних устройств. Они как-то работают, и система может ими управлять сообразно потребностям; однако пользователю все тонкости работы с внешними устройствами на низком уровне вряд ли понадобятся.

С точки зрения пользователя, разнообразие устройств должно диктоваться только разнообразием их функциональности. Но и совсем различные устройства должны поддерживать простейшие способы передачи данных, вроде "открыть устройство-прочитать-закрыть" или "открыть устройство-записать-закрыть". Для этих операций уже придумана абстракция: файл. Поэтому в UNIX точки доступа к устройствам (чаще говорят просто "устройства") размещаются в файловой системе: подобно файлам, устройства имеют имена, в них можно писать и можно из них читать. Иногда устройства называют еще файл-дырками, потому что наглядно можно себе представить устройство в виде дырки в файловой системе: все данные, которые мы записываем в такой файл, проваливаются в него, не занимая места на диске, прямо к драйверу, и читаем мы данные не с диска, а из дырки, куда их драйвер подкладывает. Традиционно устройства (или, что одно и то же, их файл-дырки) размещаются в UNIX в каталоге /dev хотя создать устройство и пользоваться им можно в любом месте файловой системы, которая поддерживает файл-дырки.

Устройства делятся на настоящие устройства, расположенные на шине PCI, и псевдо-устройства (например, оперативная память mm или псевдотерминалы pts, к которым подключается программа telnet).

Большую часть терминалов-устройств в /dev так называемые псевдотерминалы. Это довольно курьезные устройства, не имеющие не только соответствующей аппаратной части, но даже и программной! UNIX управляется посредством терминала. Терминал не обязан быть аппаратным устройством (это мы видели на примере виртуальной консоли). На самом деле, любой источник адресованных системе команд в виде потока байтов может быть терминалом. Псевдотерминалами пользуется всякая программа, желающая заменить терминал: например, многочисленные варианты эмуляторов терминала для графической системы X Window.

· /var/

В подкаталогах каталога /var хранятся временные или служебные файлы различных программ. Основные подкаталоги каталога /var:

· /var/log - журналы регистрации событий в системе.

· /var/adm - журналы регистрации событий административного контекста.

· /var/mail - новая (непрочитанная) почта пользователей.

· /var/spool - различные очереди (на печать, на отправку почты, на выполнение заданий по расписанию).

· /var/tmp - различные временные файлы.

Выполните:

Cd var

ls

Ls -l log

Tail log/syslog

Ls -l mail

Ls -ld tmp

(Обратите внимание: запись в этот каталог разрешена всем. Аналогичную функцию выполняет каталог /tmp, но природа его файловой системы другая, что, в общем-то, для пользователя не имеет значения.)

Ls -ld /tmp

· /home/

В каталоге /home размещены домашние каталоги пользователей.

· /opt/

В каталоге /opt располагаются большие пакеты прикладного ПО (аналог каталога Program Files).

· /sbin/

В каталоге /sbin располагаются самые необходимые команды и утилиты системного админитратора (в том числе и его шелл /sbin/sh), поскольку в случае сбоя системы каталог /usr/sbin может быть недоступен (о файловых системах и монтировании - в следующих разделах курса).

· /kernel/

В этом каталоге расположено ядро операционной системы (файл genunix), драйверы устройств и другие служебные файлы.