CFA LogoCFA Logo Computer
Новости Статьи Магазин Драйвера Контакты
Новости
RSS канал новостей
В конце марта компания ASRock анонсировала фирменную линейку графических ускорителей Phantom Gaming. ...
Компания Huawei продолжает заниматься расширением фирменной линейки смартфонов Y Series. Очередное ...
Компания Antec в своем очередном пресс-релизе анонсировала поставки фирменной серии блоков питания ...
Компания Thermalright отчиталась о готовности нового высокопроизводительного процессорного кулера ...
Компания Biostar сообщает в официальном пресс-релизе о готовности флагманской материнской платы ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2002 ГОД

Пингвинье дерево

Сергей ЯРЕМЧУК grinder@ua.fm

Для пользователя, который только перешел на Linux, первая трудность, с которой он обычно сталкивается, — это файловая система. «Где мои диски C и D?» — спрашивает пользователь перешедший из Windows, а бывший пользователь DOS долго будет вместо / ставить \. Посему хотелось бы познакомить пользователя с организацией файлов в Linux. Уверен, эта статья будет ему полезна — когда я начал изучать систему, мне катастрофически не хватало подобной информации, ее приходилось собирать буквально по крупицам.

Под файловой системой следует понимать как организацию файлов на диске, так и сами файлы, каталоги. Сегодня я предлагаю прогуляться по дереву каталогов и по ходу разобраться, что да как.

В Linux'е файлы не свалены просто так, все они имеют путь в дереве каталогов. Начало этого пути обозначается просто —/. Это корень файловой системы. Вы думаете, в этом ничего особенного нет, а зря. Попробуйте перейти в корневой каталог командой cd / и дайте команду rm -r * — вы удалите ВСЕ файлы и каталоги на ВСЕХ дисках, которые имеются у вас. Страшно? А теперь попробуйте под Windows обратиться ко всем дискам сразу. Не получится — можно работать только с отдельным логическим диском. Чувствуете, какая мощь в Ваших руках?

На уровень ниже от корневого находится большая группа каталогов, каждый из них играет свою роль в системе. Сразу оговорюсь, что от дистрибутива к дистрибутиву их состав может меняться, более того, вы сами можете добавить свой каталог в любое место файловой системы (обладая при этом соответствующими правами). Вот эти каталоги: /boot, /bin, /sbin, /etc, /lib, /home, /root, /mnt, /usr, /var, /dev, /opt, /proc, /tmp.

Давайте заглянем внутрь каждого и разберемся, что и за чем.

/boot — в этом каталоге содержится ядро системы (vmlinuz - номер версии). Что здесь можно изменить? Если используете LILO при загрузке и вам надоело его загрузочное сообщение на ломаном русском, то измените текст в файле message; если же Grub — то в файле /boot/grub/messages (здесь же, в каталоге grub, находится его конфигурационный файл).

•menu.lst. Ничего менять здесь не советую (пока не разобрались), но если надоела заставка при загрузке, то в параметре splashimage пропишите путь к нужному файлу с изображением (я, например, поставил заставку Windows (файл logow.sys в каталоге Windows) — мой друг до сих пор в себя прийти не может).

Следующий каталог, /bin, является основным каталогом для общеупотребительных команд Linux. Следует заметить, что не все файлы здесь являются двоичными, встречаются также сценарии оболочки и Perl-скрипты. Когда литературы по Linux'у было мало, я присматривал какой-нибудь файл из каталога и запускал man название_файла — таким образом можно узнать, для чего какая команда предназначена.

Каталог /sbin очень похож на предыдущий, за исключением того, что что-либо менять здесь имеет право только хозяин системы, т. е. root. Здесь находятся важные системные программы: настройки сети и системы, работа с дисками и пользователями и много других программ — всем этим должен заниматься только ОДИН человек.

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

В подкаталогах cron.d, cron.daily, cron.hourly, cron.monthly, cron.weekly содержатся скрипты для демона cron — планировщика задач Linux. Его можно заставить запускать программу в определенное время, периодически, ежедневно и т. п. Также это относится к файлу crontab.

Подкаталог rc.d содержит основные стартовые скрипты, соответственно уровням запуска Linux. Это каталоги rc0.d —rc6.d, номера соответствуют уровням запуска (0 — останов (halt), 1 — однопользовательский режим, 2 — многопользовательский режим без NFS (то же, что и 3, но без поддержки сети), 3 — полностью многопользовательский, 4 — не используется, 5 — Х11 — запуск с X-Window, 6 — перезагрузка (reboot)). Каждый каталог содержит сценарии оболочки, которые либо запускают, либо останавливают те или иные службы, необходимые на каждом уровне (чаще ссылки на них), а также скрипты, инициализирующие файловую систему.

В каталоге init.d содержатся сами скрипты. Например, чтобы перезапустить какой-нибудь сервис, воспользуйтесь следующей командой: /etc/rc.d/init.d/нужный_сервис restart (под root, естественно).

Любопытен подкаталог skel (может быть skel.ru и т. д.). Если вы создаете нового пользователя, то все файлы из данного каталога будут перемещены в его домашний каталог. Так что если вы хотите, чтобы какие-нибудь файлы были у всех пользователей, поместите их сюда.

В подкаталоге httpd живут файлы конфигурации web-сервера Apache.

Наконец, в подкаталоге X11 содержатся настройки Х-сервера Linux. В файле X86Config находится информация об основных настройках клавиатуры, мыши и разрешении монитора. Ну а в файле config подкаталога fs можно прописать пути к шрифтам под Х-Window (желательно шрифты с коi8-r прописывать первыми).

• В файле exports находится информация (для сервиса NFS) о том, какие файловые системы могут экспортироваться, каким компьютерам предоставлен доступ, а также тип и уровень доступа. Пример файла:

/home bilgates.com(ro) torvalds.org(rw)

/tmp (ro,insecure,root_squash)

В данном примере экспортируются две файловые системы. Каталог /home экспортируется только для чтения с узла bilgates.com, для чтения и записи — с узла torvalds.org. Каталог /tmp разрешается подключить к любому узлу (т. к. не указан конкретный), экспорт только для чтения, отображаются все запросы с корневого каталога удаленной машины. В общем, настроек хватает — почитайте Linux-NFS-HOWTO.

• В файле smb.conf производится настройка сервиса Samba (Session Message Block). С помощью данного сервиса происходит разделение файловых систем, а также совместное использование принтеров компьютерами с Linux и Windows.

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

Необходимое отступление: В Linux, как и во всех Unix-системах, понятия диска как такового нет. Здесь все блочные устройства (СD-rom, дисковод, жесткий диск) монтируются в файловую систему. Для этого необходимо иметь уже созданный каталог и само устройство, которое вы хотите использовать. Вот так, например, монтируется CD-ROM: mount -r -t iso9660 /dev/cdrom /mnt/cdrom (параметр -t iso9660 указывает тип файловой системы, а -r подключает файловую систему только для чтения. Если параметры уже прописаны в файле fstab, то при вызове команды их можно опустить). Теперь все файлы с вашего CD будут находиться в каталоге /mnt/cdrom.

Да, для домашнего пользователя такая система несколько неудобна. Но для сменных носителей в новых дистрибутивах уже есть опция автомонтирования (демон autofs, запускающий программу /usr/sbin/automount, с конфигурационными файлами /etc/auto.master и /etc/auto.tab). А если Вы — системный администратор в какой-нибудь фирме, то, наоборот, должны радоваться подобному обстоянию дел: информация, которая вводится в компьютер и особенно выводится, будет под Вашим полным контролем, так как монтировать все файловые системы имеет право только root. Но при такой организации есть один большой недостаток — если вы просто вынете дискету (а это касается в основном дисковода, т. к. ни CD-rom, ни ZIP вы просто не извлечете из устройства — он заблокируется), то файловая система может быть разрушена. Поэтому существует обратная команда umount c указанием либо точки подключения, либо устройства, либо типа файловой системы (-t), также можно указать параметр -а, который отключит все файловые системы.

Вот так можно размонтировать CD-rom:

Конец отступления. Переходим в наступление :-).

Формат записи файла fstab такой:

Например:

Значение большинства опций очевидно, а если какие не понятны, посмотрите документацию по fstab, т. к. объяснение займет слишком много места.

Если необходимо подключить сетевую файловую систему NFS, то имя указывается в следующем формате:

после чего указать тип файловой системы nfs; все остальное практически аналогично монтированию локальной системы.

• В следующем файле group помещена информация обо всех группах в системе. Формат следующий:

Особенность Linux — он обращает внимание на идентификатор, а не на название группы, поэтому если вы присвоите один номер двум разным группам, то это будет одна и та же группа. Удалить группу можно, просто закомментировав соответствующую строчку в файле.

Следующие файлы принадлежат группе настройки DNS (Domain Name Service). Если, кто еще не знает, эта служба обеспечивает преобразование имен узлов в IP-адреса.

• Первый файл — это файл библиотеки разрешения имен /etc/host.conf. Интересные параметры:

order hosts, bind — указывает, в каком порядке использовать механизмы разрешения имен (hosts — файл /etc/hosts, bind — сервер DNS)

nospoof on/off — если включен, то производится обратное разрешение (по IP-адресу узнается имя узла) и сверяется с входным. Предотвращает фальсификацию адреса.

trim — указывается имя домена, которое можно опустить в файле /etc/hosts.

• Второй файл, /etc/resolv.conf, — здесь указываются серверы имен DNS, локальное имя домена.

named.boot, named.hosts, named.rev, named.ca — это все файлы, откуда демон DNS named берет информацию, необходимую для работы.

Назначение файла hosts аналогично одноименному файлу в Windows: если вы хотите, чтобы узлы в Интернете загружались быстрее, зарезервируйте в нем те, что чаще всего вами посещаются. Можно также дополнительно внести короткий псевдоним узла — чтобы не нажимать лишних клавиш.

Формат следующий: IP-адрес_узла полное_имя [псевдоним]. Например, 127.0.0.1 localhost (эта строчка должна обязательно там присутствовать).

• Файл inittab — это один из файлов конфигурации начальной загрузки системы. Здесь устанавливается уровень запуска Linux, количество виртуальных терминалов. Если у вас в консоли не отображаются буквы кириллицы, то раскомментируйте четыре строки после 8bits supports в файле inputrc.

• Файл lilo.conf — конфигурационный файл загрузчика LILO.

• В файле modules.conf прописаны все загружаемые модули ядра.

• Файл motd содержит «сообщение дня», которое получит каждый пользователь после регистрации в системе.

При добавлении нового пользователя в систему информация о нем вносится в файл passwd, а пароль (в зашифрованном виде) — в файл shadow.

• В файле profile экспортируются различные переменные окружения. Что-либо изменять, не разобравшись, я не советую. Правда, в Linux'e после краха приложения образуются так называемые «корки» CORE, которые могут занимать значительное место на диске. Чтобы они не образовывались, добавьте следующие строки в файл:

В том же файле обязательно должна быть строка

• Наконец, в файле services содержатся протоколы Интернета и соответствующие им номера портов, и если какой-либо сервис не запускается (например, SWAT), то иногда достаточно просто прописать его здесь. А вообще, почитайте — интересно.

Ну вот мы, наконец, закончили обзор каталога /etc и переходим к следующему.

Каталог /lib — содержит общесистемные библиотеки, что-то вроде dll в Windows, которые загружаются в память только при необходимости.

Каталог /home включает в себя домашние каталоги пользователей, сюда пользователь попадает после регистрации в системе, при этом login (имя пользователя) совпадает с именем личного каталога. Конфигурационные файлы, находящиеся в данном каталоге, имеют преимущество перед общесистемными. Файлов много, назначение большинства из них прояснится, если открыть их в текстовом редакторе, но о некоторых из них я все же вкратце расскажу. Если в системе установлен сервер Apache, то если создать в домашнем каталоге подкаталог public_html, при определенных настройках сервера (обычно по умолчанию), к каталогу можно обратиться так:

т. е. здесь можно разместить домашнюю страницу пользователя.

• В файле .Xdefaults просматривают свои конфигурационные параметры различные программы (emacs, Xterm и т. д.), иногда, для того чтобы программа отображала кириллицу, достаточно просто указать в строке:

• В файле .bash_history содержится история команд, а в файле .bashrc вы можете прописать псевдонимы команд, чтобы не набирать их полностью (например, alias rm='rm -i' не позволит удалять файлы без предупреждения). В этом же файле можно добавить свои каталоги к переменной PATCH.

Ну, с каталогом /root все ясно — это аналог домашнего каталога для суперпользователя.

В каталоге /mnt вы найдете свой CD-ROM, дисковод, раздел FAT c Windows; одним словом, сюда монтируются все сменные накопители.

/usr — каталог для пользовательских программ со своими библиотеками (/usr/lib), исполняемыми файлами (/usr/bin), конфигурационными файлами (/usr/etc). Здесь же можно найти море документации (/usr/share/doc, /usr/share/info, /usr/share/man). В каталог /usr/X11R6/lib/X11/fonts система по умолчанию устанавливает все шрифты. Локальные установки для разных стран находятся в /usr/share/locale, а в каталоге /usr/lib/kbd — подкаталоги с консольными раскладками клавиатуры и консольными шрифтами. Наконец, в каталогах /usr/src содержится сердце Linux — ядро в исходных текстах. Подкаталог /usr/local предназначен для адаптации системы под локальные нужды пользователя.

В каталог /var поместили все изменяемые файлы системы (чтобы легче было создавать резервные копии). Здесь находятся файлы баз данных (в подкаталоге /var/lib), корневой каталог web-сервера (/var/www), подкаталог демона печати (/var/spool), подкаталог почтового сервера (/var/mail) и подкаталог, куда записываются все сообщения системы (/var/log) — при анализе данного каталога всегда можно найти причину сбоя.

Следующий каталог, /dev, содержит файлы устройств. Здесь вы найдете и свой CD-ROM (обратите внимание, /dev/cdrom — всего лишь ссылка на соответствующий диск, равно как и /dev/hdd), и файлы драйвера мыши (/dev/mouse), и так называемую «черную дыру» /dev/null, и модем (/dev/cua), и вообще все, что у вас установлено.

На что здесь можно обратить внимание? Если у вас под обычным пользователем не работает какое либо устройство, а под root'ом работает, то следует определить для себя, любимого, доступ к исполнению (командой chmod a+rw или через mc 'файл->права доступа'). Например, такое очень часто бывает со звуком (/dev/mixer, /dev/audio, /dev/dsp и т. д.).

Каталог /opt предназначен для компонентов, которые устанавливаются опционально. У меня, например, там одиноко томится OpenOffice.

Ну а каталога /proc на самом деле не существует (на жестком диске) — это виртуальная файловая система для чтения информации о процессах. Попробуйте команду cat /proc/meminfo (iomem, ioports, interrupts) — и вы все поймете.

Назначение каталога /tmp аналогично таковому в OS Windows — для хранения временных файлов, создаваемых программами по ходу выполняемых процессов.

Вот мы с вами и пробежались галопом по всему дереву каталогов. Конечно, дистрибутив на дистрибутив бывает не похож, но основные каталоги будут всегда там, где вы ожидаете их найти. Если какой-либо файл будет перенесен в другое место, то все равно на старом месте (как правило) будет ссылка на него, для совместимости. В чем преимущества такой организации? А в том, что пользователи видят дерево каталогов как единую структуру, хотя различные каталоги этого дерева могут находиться на разных дисках, или, более того, на разных компьютерах в сети. Да и зачем обычному пользователю знать такие мелочи — он должен найти файлы именно там, где они и должны находиться (ведь система, напоминаю, МНОГОпользовательская), и никакая реорганизация не должна помешать ему в этом. Я, конечно, не смог вам рассказать о всех файлах в Linux'е: просто физически это сделать невозможно (да и вряд ли кто-то захочет), настолько их много. Назначение большинства проясняется, если открыть их в каком-нибудь текстовом редакторе; настраиваемые в файле параметры иногда бывают понятны из комментариев некоторые (для того чтобы их включить, достаточно просто раскомментировать (представьте себе в Windows надпись: «Для того чтобы Ваша система могла работать с сетью, раскомментируйте, пожалуйста, следующие строки в реестре». Что, трудно? У меня, признаться, тоже не хватает фантазии). Назначение многих файлов также можно узнать из встроенной справочной информации (man, info, apropos). Остается только пожелать вам удачи, и… Linux forever!

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы или вычислите пример: *
captcha
Обновить





Хостинг на серверах в Украине, США и Германии. © sector.biz.ua 2006-2015 design by Vadim Popov