Файловая система есть собрание файлов и иерархия каталогов. Я обещал поводить вас по файловой системе - и время настало. У вас достаточно интеллекта и знаний извлечь пользу из того, что я говорю и у вас есть карта дорог. (Смотрите Рис. 2.2.8).
Перво-наперво вернемся в
корневой каталог (cd /
) и сделаем ls -F
. Вы, очевидно,
увидите каталоги: bin
, dev
, etc
, home
,
install
, lib
, mnt
, proc
,
root
, tmp
, user
, usr
и var
.
(Можете увидеть и несколько отличный вариант - не волнуйтесь, различные версии
Linux могут иметь отличия).
Присмотримся к каждому каталогу.
bin
- это
сокращенно от ``binaries'' (т.е. двоичные или выполняемые файлы). Здесь
находится много важных системных программ. Используйте команду ``ls
-F/bin
'' чтобы посмотреть имеющийся здесь список файлов. Вы можете
обнаружить здесь уже знакомые вам команды, вроде cp
, ls
и mv
. Это и есть программы соответствующих команд. Когда, например,
вы используете команду cp
, вы выполняете программу /bin/cp
.
Используя ls -F
,
вы увидите, что большинство (если не все) файлов в /bin
имеют
справа от имени звездочку (``*
''). Это говорит о том, что файлы
выполняемые, как описано в Разделе 3.3.2.
Следующая остановка
на нашем пути - dev
. Вновь посмотрите на содержимое с помощью
ls -F
.
"Файлы" в /dev
известны как драйверы устройств - они используются для доступа к
устройствам и ресурсам системы, таким как диски, модемы, память и т.д. Например,
как вы можете читать данные из файла, точно также вы можете читать входные
сигналы от мыши, имея доступ к /dev/mouse
. Имена файлов, начинающиеся
на fd
- это дисководы гибких дисков. fd0
- первый
дисковод, fd1
- второй. Теперь самые шустрые из вас заметят,
что здесь имеется больше дисководов, чем те два, которые мною упоминались:
они представляют специфические типы дисководов. Например, fd1H1440
представляет доступ к high-density, 3.5" дискетам на дисководе 1.
Вот перечень некоторых из наиболее используемых файлов устройств.
/dev/console/
относится к системной консоли, т.е. к монитору, напрямую связанному с
системой. /dev/ttyS
и /dev/cua
устройства используются для доступа к последовательным
портам. Например, /dev/ttyS0
относится к ``COM1'' под MS-DOS.
Устройства /dev/cua
относятся к "звонящим" (``callout'')
устройствам, которые используются совместно с модемами. hd
, имеют доступ к жестким дискам. /dev/hda
относится ко всему первому жесткому диску, а hda1
только к первому разделу /dev/hda
. sd
- SCSI-драйверы. Если у вас SCSI жесткий
диск, вместо доступа к нему через /dev/hda
, вы будете обращаться
к /dev/sda
. SCSI ленты доступны через устройства st
,
а SCSI CD-ROM через sr
. lp
обеспечивают доступ к параллельным портам. /dev/lp0
относится
к ``LPT1'' в MS-DOS. /dev/null
используется как "черная дыра" - любые данные, посланные сюда, канут в
Лету. Если вы хотите подавить вывод команды на экран, вы можете перенаправить
этот вывод в /dev/null
. Мы об этом позже еще поговорим. /dev/tty
относятся к "виртуальным консолям" вашей системы
(доступ путем нажатия /dev/tty1
соответствует первой VC, /dev/tty2
соответствует второй и
т.д. /dev/pty
, это "псевдотерминалы". Они используются
для входа с удаленных "терминалов". Например, если ваша машина в сети,
вход к вам по telnet будет использовать одно из устройств /dev/pty
./etc
содержит
множество всевозможных системных файлов конфигурации. Они включают /etc/passwd
(файл паролей), /etc/rc
(командный файл инициализации) и т.д.
/sbin
используется
для хранения важных системных двоичных файлов, используемых системным администратором.
home
содержит
домашние каталоги пользователей. Например, /home/larry
- домашний
каталог пользователя ``larry
''. На вновь инсталлированной системе
этот каталог может быть пуст в связи с временным отсутствием зарегистрированных
пользователей.
/lib
содержит
образы разделяемых библиотек (shared library images). Эти
файлы содержат код, который могут использовать многие программы. Вместо
того, чтобы каждая программа имела свою собственную копию этих выполняемых
файлов, они хранятся в одном общедоступном месте - в /lib
.
Это позволяет сделать выполняемые файлы меньше и сэкономит место в системе.
/proc
-
это "виртуальная файловая система", в которой файлы хранятся в памяти, а
не на диске. Они связаны с различными процессами, происходящими в
системе, и позволяют получить информацию о том, что делают программы и процессы
в указанное время. Более детально мы рассмотрим это в Разделе 3.11.1.
Многие программы нуждаются
в создании рабочих файлов, которые нужны короткое время. Каноническое место
для этих файлов в /tmp
(там обычно чаще проводится уборка мусора).
/usr
-
это очень важный каталог. Он состоит из ряда подкаталогов, которые в свою
очередь содержат наиболее важные и полезные программы и файлы конфигурации,
используемые системой.
Различные каталоги,
описанные выше, необходимы для нормального функционирования системы, но
большинство вещей, содержащихся в /usr
необязательны для системы.
Но это такие необязательные вещи, которые делают систему полезной и интересной.
Без /usr
вы бы имели достаточно занудную систему, содержащую
только программы, вроде cp
и ls
. /usr
содержит много больших программных пакетов и конфигурационных файлов, которые
их сопровождают.
/usr/X386
содержит The X Window System, если вы ее инсталлировали. The X Window System
- это мощная графическая среда, которая содержит большое количество графических
утилит и программ, отображающих "окна" на вашем экране. Если вы знакомы
с Microsoft Windows или Macintosh environments, то X Windows будет выглядеть
весьма похоже. Каталог /usr/X386
содержит все выполняемые и
конфигурационные файлы X Window, а также файлы поддержки. Более детально
это будет обсуждаться в Разделе 5.1.
/usr/bin
настоящее хранилище для различных программ UNIX. Он содержит большинство
выполняемых программ, которых нет ни в каких других местах, например, в
том же /bin
их нет.
Точно также, как и /etc
,
содержит всевозможные системные программы и конфигурационные файлы. /usr/etc
содержит даже больше утилит и файлов. В общем, файлы, находящиеся в /usr/etc
несущественны для системы, в отличие от тех, которые находятся в /etc
,
и очень существенны.
/usr/include содержит
include-файлы для компилятора Си. Эти файлы (большинство имен которых
заканчивается на .h (от слова ``header'') объявляют имена структур данных,
подпрограмм и констант, используемых при написании программ на Си. Те файлы,
которые находятся в /usr/include/sys
в общем случае используются
при программировании на системном уровне UNIX. Если вы знакомы с языком
программирования Си, здесь вы найдете такие хэдеры (фрагменты программ,
вставляемые обычно в начало программы), stdio.h
, которые описывают
такие функции, как printf()
.
/usr/g++-include
содержит include-файлы для компилятора Cи++ (очень похожие на /usr/include
).
/usr/lib
содержит библиотеки-"заглушки" и "статические" библиотеки, эквивалентные
файлам из /lib
. При компиляции программа "связывается" с библиотеками,
находящимися в /usr/lib
, которые в свою очередь направляют
программы обращаться в /lib
, если им нужен актуальный код.
Кроме того, многие другие программы хранят в /usr/lib
свои
конфигурационные файлы.
/usr/local
в большой степени похож на /usr
- он содержит различные программы
и файлы, несущественные для системы, но превращающие ее в удовольствие и
восторг. В общем, эти программы, находящиеся в /usr/local
специализируются
на специфике вашей системы, т.е. /usr/local
сильно отличается
в различных UNIX. Здесь вы найдете такие большие программные пакеты, как
TeX (система форматирования документов) и Emacs (большой и мощный редактор),
если вы их установите.
Этот каталог содержит
страницы Руководства. Здесь два подкаталога для каждого "раздела" Руководства.
(С помощью команды "man man" вы можете получить более подробную информацию).
Например, /usr/man/man1
содержит исходные тексты (неотформатированный
оригинал) страниц Руководства в разделе 1 и /usr/man/cat1
содержит
отформатированные страницы для раздела 1.
/usr/src
содержит исходные коды (неоткомпилированные программы) для различных программ
вашей системы. Наиболее важная вещь здесь, это /usr/src/linux
,
содержащий исходные коды ядра Linux.
/var
содержит
каталоги, которые часто меняются в размере или имеют тенденцию быстро расти.
Многие из этих каталогов "квартировались" в /usr
, но поскольку
мы стремимся сделать его достаточно стабильным, каталоги, которые часто
меняются были перенесены в /var
. К числу таких каталогов относятся:
/var/adm
содержит различные файлы, интересные системному администратору, специфические
системные файлы, фиксирующие ошибки и проблемы, возникающие в системе. Другие
файлы фиксируют входы в систему, как и неудачные попытки войти. Это будет
обсуждаться в Главе 4.
/var/spool
содержит файлы, которые предварительно формируются для других программ.
Например, если ваша машина подключена к сети, входная почта будет помещаться
в /var/spool/mail
до тех пор, пока вы не прочитаете ее или
не удалите. Входящие и исходящие новости помещаются в /var/spool/news
и т.д.