При работе с Linux нужно держать в голове концепцию, которая лежит в основе системы: «Всё — это файл». Расшифровывается просто: любые данные и процессы операционной системы можно выразить как поток байтов, занимающий определённый объём файловой системы на дисковом накопителе.
Соответственно, всё, что занимает место, можно назвать файлом. А уж файлы можно структурировать как душе угодно:
- обычные файлы
- текстовые
- бинарные
- файлы изображений
- архивы и т.п.
- специальные
- блочные для обозначения устройств (
b
) - символьные (
с
) - ссылочные для представления символьных ссылок (
l
) - файлы сокетов для связи между разными процессами и пр. (
s
)
- блочные для обозначения устройств (
- директории — файлы, в которых хранятся другие файлы (
d
)
Узнать тип файла можно с помощью команды, с которой мы уже имели дело:
ls -l
Первый символ в каждой строке вывода обозначает тип файла. Уточнить его можно с помощью команды file [имя]
, которой в качестве входных данных передаётся имя файла/папки.
Linux-системы имеют много общего, и файловая структура — одна из этих общих черт. Знакомство с ней поможет увереннее ориентироваться в операционной системе в целом. Давайте погрузимся немного поглубже и посмотрим, что лежит в корне Linux-системы.
Собственно, в корне, или корневой директории «/»
, лежат все данные сервера, распределённые по разным каталогам. При этом каждый каталог имеет своё значение и содержит файлы, сгруппированные по определённому критерию. По умолчанию структура директорий состоит из папок:
Рассмотрим каждую подробнее.
/bin
Директория /bin
содержит исполняемые бинарные файлы различных служб, доступные для запуска любым пользователям сервера. Включает и исполняемые файлы базовых команд, которые мы узнали в статье про первые шаги в командной строке: echo
, cat
, cd
, pwd
, ls
и пр.
Является символьной ссылкой на каталог /usr/bin
.
/boot
Содержимое этого каталога содержит сердце системы — файлы загрузчика и ядра. Без этой директории операционная система не сможет запуститься.
/dev
Эта директория содержит файлы устройств, подключенных к серверу. Включает терминал, через который мы отдаём серверу команды (tty*
), а также специальные устройства типа null
, random
, zero
. Ну и, конечно, сам диск сервера и его разделы (vda*
).
/etc
Эта директория по умолчанию содержит все конфигурационные файлы служб, а в некоторых случаях — и скрипты для их запуска и отключения. Если вам нужно изменить какие-то параметры в работе той или иной службы — скорее всего, её конфигурационный файл будет лежать где-то в /etc
. Но не всегда.
/home
Эта папка предназначена для домашних каталогов пользователей. Каждый раз, когда вы создаёте локального пользователя без указания домашней папки, здесь автоматически создаётся одноимённая папка — его домашняя директория по умолчанию.
/lib и /lib64
В директории /lib
хранятся библиотеки, необходимые для работы системных служб, файлы которых размещены в папках /bin
и /sbin
. А также данные для загрузки системы и модуля ядра ОС.
Директория /lib64
предназначена для тех же целей, только включает в себя библиотеки для всех остальных служб сервера.
По умолчанию /lib
и /lib64
являются символьными ссылками на соответственно /usr/lib
и /usr/lib64
.
/media
В этой директории операционная система автоматически монтирует внешние устройства (USB, CD-ROM и пр.).
/mnt
Эта папка выполняет аналогичные /media
функции — используется для временного монтирования внешних устройств. Преимущественно вручную.
/opt
В эту папку обычно устанавливается пользовательское программное обеспечение. Собственно, это и заложено в название — директория для опциональных, необязательных данных. По умолчанию не содержит данных.
/proc
В этом каталоге хранятся процессы и системная информация ОС, представленная в виде файлов, так называемая «виртуальная файловая система». Все данные в этом разделе генерируются автоматически и обновляются на лету.
Все директории с наименованием в цифровом формате содержат информацию о запущенных процессах. В частности, название папки соответствует PID
, идентификатору процесса.
/root
Домашняя папка для корневого пользователя root
.
/run
Этот каталог включает в себя данные, обрабатываемые и хранимые в оперативной памяти — например, PID
процессов, информацию о ходе их выполнения, активные сокеты и пр. Так называемая временная файловая система. Она сбрасывается при каждой перезагрузке сервера.
/sbin
Как и /bin
, содержит исполняемые бинарные файлы системных служб. Но, в отличие от /bin
, только служб, запуск которых возможен исключительно с правами администратора.
Является символьной ссылкой на каталог /usr/sbin
/srv
Эта папка предназначена для сервисных нужд — чтобы пользователи сервера могли найти какие-то общедоступные данные для конкретной службы, например, веб-сервера, FTP-сервера. По умолчанию не содержит данных.
/sys
Ещё одна директория, содержащая виртуальную файловую систему. В этот раздел экспортируются данные ядра операционной системы и его модулей. Этот каталог перезаписывается после каждой перезагрузки операционной системы.
/tmp
Эта папка используется операционной системой и различными внутренними службами для хранения временных файлов.
/usr
В этом каталоге хранятся исполняемые файлы, библиотеки и файлы документации (man
) для внутренних служб, компоненты ядра для функционирования операционной системы, а также данные программ, установленных пользователями.
Собственно, директории /bin
и /sbin
, /lib
и /lib64
cсылаются на соответствующие каталоги внутри /usr
.
/var
Директория /var
содержит часто изменяемые данные. Например, кэши (/var/cache
), логи (/var/log
), очереди (/var/spool
).
Здесь же по умолчанию хранятся данные сайтов (/var/www
), сервера баз данных (/var/lib/mysql
), почтового сервера (/var/mail
→ /var/spool/mail
).
Теперь мы знаем, как работать с файлами в Linux-системах и как они распределены по каталогам. Самое время подняться на следующий уровень и поговорить о не менее важном атрибуте любой Linux-системы — о пользователях.