Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Системное и сетевое администрирование. Учебное пособие

.pdf
Скачиваний:
2
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
5) $HOME/.editor – задает редактор по умолчанию для данного
пользователя;
6) $HOME/.gitconfig – в файле указывается имя по умолчанию и ад-
рес электронной почты для указания в коммитах Git;
7) $HOME/.profile – командная оболочка с регистрацией выполняет
команды из скрипта.profile при запуске;
8) $HOME/.ssh/config – конфигурация SSH для конкретного пользо-
вателя.
2.10. РАБОТА С ФАЙЛОВОЙ СИСТЕМОЙ
2.10.1. Особенности файловых систем
Файловая система – это способ, которым файлы именуются, хра­нятся, извлекаются, обновляются на диске или в хранилище. Структура файловой системы должна иметь предопределенный формат, понятный системе.
Организация файловой системы – это форматирование, разметка и способ хранения организованных структур данных на жестком диске. Разделена такая системная оболочка на два сегмента: meta-данные (имя файла, дата
В Linux организация данных на устройствах хранения, таких как жесткие диски и SSD, осуществляется через сложную структуру. Она содержит в себе блоки данных и индексные узлы (inodes). Когда созда­ется новый файл, система назначает ему один или несколько индекс­ных узлов, в которых сохраняются метаданные этого файла.
Каждый фикатор, необходимый для отслеживания файла в системе. Он хранит все сведения о файле, кроме его имени и фактического содержимого. Фактическое содержимое файла хранится в блоках данных, их размер определяется при организации файловой системы. В дальнейшем она контролирует размещение этих блоков на физическом носителе, опти­мизируя того, файловая система отвечает за эффективное использование диско­вого пространства, размещая файлы таким образом, чтобы снизить задержку при доступе и уменьшить фрагментацию данных. Это также предполагает применение алгоритмов для определения наилучшего
создания, размер) и пользовательские данные.
индексный узел представляет собой уникальный иденти-
доступ к информации и минимизируя фрагментацию. Кроме
31
расположения файлов и папок на диске с учетом текущего использо­вания и доступного пространства. Такая организация повышает гиб­кость и производительность системы, позволяя ей быстро находить и обрабатывать данные, что также облегчает восстановление и управ­ление файлами благодаря четкой компоновке индексных узлов и бло­ков данных.
Файловая система Linux – это древовидная (tree-shared) сложная структура, начинающаяся с корня. Она состоит из каталогов (директо­рий, directory) и подкаталогов (subdirectory). Каждый файл и файловая система взаимосвязаны между собой. Эта структура соответствует ти­пичной схеме, предложенной FHS (стандарт, поддерживаемый System
Linux Foundation).
Для Linux существует множество различных файловых систем, наиболее распространенными среди них являются следующие: Ext, Ext2, Ext3, Ext4, JFS, XFS, Btrfs, Swap. Описанные типы файловых си­стем имеют разный функционал
и набор заданных команд.
Ext (extended file system) – расширенная файловая система, была предложена в 1992 году и считается одной из первых. Ее функцио­нальность была разработана частично на основе файловой системы UNIX. Начальная цель – выйти за рамки файловой системы, существо­вавшей до нее (MINIX), и преодолеть ее ограничения. Сегодня практи­чески не используется.
Ext2 – вторая расширенная файловая
система. Известна с 1993 года, была разработана как аналог предыдущей файловой системы. В ней были реализованы инновации в рамках объема памяти, изменена об­щая производительность. Она позволяет хранить до 2 ТБ данных.
Ext3 – третья расширенная файловая система, была разработана в 2001 году. Превосходит предыдущую тем, что является журналируе­мой (journaling), т. е. она записывает в
отдельный журнал изменения (обновления) файлов и данных до того, как эти действия были завер­шены. В этой файловой системе применяется алгоритм, позволяющий восстановить файлы после перезагрузки.
Ext4 – четвертая расширенная файловая система, была создана в 2006 году. Она преодолела многочисленные ограничения, которые были в третьей версии, на сегодняшний день широко используется и является
файловой системой по умолчанию в большинстве дистрибу-
тивов Linux.
32
2.10.2. Типы файлов в Linux
–
d
p
Выделяют следующие типы файлов Linux: обычные файлы (regular file), именованный канал (named pipe), файл для туннелей и устройств (device file), символическая ссылка (soft link), директории (каталоги),
сокет (socket). В табл. 2.2 приведена характеристика некоторых типов файлов, применяемых в Linux.
Таблица 2.2
Характеристика типов файлов
Тип файлов Обозначение Назначение Обычные файлы Каталоги Символьные
ссылки Блочные
устройства Символьные
устройства Каналы Сокеты s
Хранение символьных и двоичных данных Организация доступа к файлам
l
b
c
Предоставление доступа к файлам, располо­женным на любых носителях
Предоставление интерфейса для взаимодей­ствия с аппаратным обеспечением компьютера
Организация взаимодействия процессов в опе­рационной системе
2.10.3. Директории в Linux
В отличие от файловой системы MS Windows, которая имеет не­сколько корней, файловая система Linux допускает лишь один корень. Корневой каталог является местом, где находятся все остальные дирек­тории и файлы операционной системы (обозначается прямой ко сой чертой). Вся структура папок в Linux представлена в едином каталоге, именуемом корневым (root directory).
К основным каталогам, входящим в корневой каталог
, относятся
следующие:
/home – домашняя директория (home directory). Разделы Linux – это многопользовательская оболочка, поэтому отдельному пользовате­лю назначается отдельный объект в системе, доступный исключитель­но ему и суперпользователю;
33
/bin (сокращенно от binary) – здесь операционная система хранит основные программные коды. Бинарные файлы – исполняемые органи­зованные структуры данных, содержащие откомпилированный исход­ный код;
/sbin (сокращенно от system binary) – эта директория зарезерви­рована для программного обеспечения, необходимого для регенерации, загрузки и отката;
/opt (где opt – «необязательный») – это место, где хранятся ин- сталлированные вручную приложения
/usr (Unix System Resources). В отличие от /bin или /sbin, которые принадлежат приложениям, включенным в систему, эта директория принадлежит пользовательским приложениям.
Наиболее распространенными подкаталогами являются следующие подкаталоги /usr:
и программы;
 /usr/bin – большинство двоичных программ;
 /usr/include – заголовочные организованные структуры данных,
необходимые для компиляции исходного кода;
/usr/sbin – подкаталоги, предназначенные для задач, выполняю-
щихся многократно;
/usr/lib – libraries (библиотеки);
 /usr/src – исходные тексты ядра, файлы заголовков (header files);
 /usr/share – разделяемые от архитектуры файлы (документы,
иконки, шрифты).
Изначально каталог /usr предназначался для всего, что связано с пользователем, но со временем он потерял свое значение и теперь это место для хранения программного обеспечения и пользовательских данных.
Library files – это программы, используемые совместно другими приложениями; /lib – библиотека (library), т. е. директории библиотеч­ных файлов (/lib /lib32 /lib64).
/boot – это статический файл ядра (kernel) и файлы (configuration files), необходимые для за­пуска компьютера.
/sys – это место, где пользователь (user) взаимодействует с ядром (kernel). Его рассматривают как путь к ядру со структурой, заданной
заранее. В директорию монтирована виртуальная файловая система
загрузчик, который содержит исполняемый
34
sysfs, т. е. интерфейс ядра для доступа к данным подключенных устройств.
/tmp – это место, где хранят временные структуры данных (temporary files), необходимые приложениям во время сеанса работы.
/dev – это место, где находятся файлы устройств (special files), при
помощи которых программное обеспечение взаимодействует с перифе­рией. Файлы устройств разделяют на символьные и блочные. Блочное устройство (block device) выполняет ввод данных в виде блоков (например, SSD диск), а символьное устройство
(symbol device) выполняет ввод-вывод информации в виде символов (например, клавиатура).
/proc – это место, где хранится информация о процессах. В данном
каталоге находятся псевдофайлы (pseudofiles), содержащие сведения о системных ресурсах.
/run – это директория, в которую монтируется виртуальная файло­вая система tmpfs для хранения процессами. Здесь находятся сведения о времени выполнения опера­тивной памяти. Эти файлы хранятся в оперативной памяти и по завер­шении сеанса исчезают.
/root – это каталог для администратора (super user), домашняя ди­ректория пользователя root.
файлов, связанных с выполняющимися
-вывод информационных
2.10.4. Монтирование файловых систем
Чтобы данные раздела диска стали доступны, этот раздел должен быть смонтирован в корневую файловую систему. Существуют следу­ющие виды монтирования.
1. Временное через консольную команду mount.
2. Постоянное через файл /etc/fstab.
3. Монтирование с помощью службы systemd.
К основным опциям монтирования относятся следующие:
1) auto – файловая система монтируется автоматически;
2) ro – монтируется в режиме «только
3) rw – монтируется в режиме «чтение и запись»;
4) dev – файловая система может содержать файлы блочных и сим-
вольных устройств;
5) exec – файловая система может содержать исполняемые файлы;
6) suid – разрешено использование битов SUID и SGID;
чтение»;
35
7) user – обычному пользователю разрешено размонтировать дан-
ную файловую систему и при этом используются значения по умолча­нию (noexec, nosuid, nodev);
8) defaults – установки по умолчанию (rw, suid, dev, exec, nouser,
async);
9) codepage (кодовая страница) – разрешено применять указанную
кодировку к именам файлов;
10) nodev – файловая система не может содержать файлы блочных
и символьных устройств;
11) noexec – файловая система не позволяет запускать
файлы;
12) nosuid – запрещено использование битов SUID и SGID;
13) nouser – обычному пользователю запрещено размонтировать
данную файловую систему.
исполняемые
2.10.5. Ключевые команды с файлами и папками в Linux
Через терминал в Linux доступен обширный арсенал команд для работы с файлами и каталогами. К основным из них можно отнести следующие:
1) ls – позволяет просмотреть, что находится внутри папки. Мож-
но использовать с различными опциями;
2) mkdir [имя каталога] – можно использовать для создания новой
папки;
3) cat [имя файла] – выводит текст файла прямо
4) less [имя файла] – дает возможность пролистывать содержимое
указанного файла по страницам;
5) touch [имя файла] – позволяет инициировать создание нового
файла без содержимого при условии, что файл с таким именем еще не существует;
6) rm [имя файла] – удаляет указанный файл;
7) rm -r [имя каталога] – удаляет каталог и все его содержимое
курсивно;
8) ln -s [оригинальный файл] [ссылка] – формирует символиче-
скую ссылку, указывающую на выбранный файл или директорию;
9) pwd – выводит текущее местоположение в структуре каталогов;
10) which [программа] – показывает полный путь к исполняемому
файлу;
в окно терминала;
ре-
36
11) cd [путь к папке] – изменяет текущую директорию на указан-
ную;
12) cp [исходная папка] [целевая папка] – копирует файлы из одно-
го места в другое;
13) mv [текущий файл/каталог] [целевой каталог или новое имя] –
может как переместить, так и переименовать файлы или папки;
14) locate [имя файла] – помогает быстро найти файлы, соответ
-
ствующие заданному шаблону.
Эти команды можно считать основой для взаимодействия с файло­вой системой Linux. При необходимости их можно комбинировать или расширять с помощью различных опций для выполнения сложных задач.
2.11. РАБОТА С ПРОЦЕССАМИ
Операционную систему можно рассматривать как программное обеспечение, создающее единое абстрактное представление ресурсов, которые могут быть запрошены приложениями и
к которым они могут получить доступ. В качестве таких ресурсов выступают основная па­мять, файловые системы, сетевые интерфейсы и др. Соответственно если есть такие абстракции ресурсов, которыми могут пользоваться приложения, то нужна также система управления использованием этих ресурсов. Для эффективного распределения имеющихся ресурсов в современных операционных системах принята модель, в
которой вы­полнение приложения соответствует существованию одного или не­скольких процессов.
Процесс – это совокупность взаимосвязанных и взаимодействую­щих действий, преобразующих входящие данные в исходящие. По­скольку программа – это совокупность инструкций, то процесс пред­ставляет собой непосредственное выполнение этих инструкций.
Важными элементами процесса являются программный код, кото­рый может совместно использоваться другими
процессами, и набор данных, связанный с этим кодом. Следует также отметить, что любой процесс имеет ряд связанных с ним элементов: идентификатор, прио­ритет по сравнению с другими процессами, состояние (например, вы­полнение или блокировка), указатели памяти, информация о состоянии ввода-вывода и др. С каждым процессом связывается его адресное пространство,
из которого он может читать и в которое он может
37
писать данные. Адресное пространство или образ памяти содержит саму программу, данные к программе и стек программы. Таким обра­зом, процесс – это контейнер, в котором содержится вся информация, необходимая для работы программы.
Выделяют активные и фоновые процессы. Активный процесс име­ет возможность вводить данные с терминала. В каждый момент у каж­дого
терминала может быть не более одного активного процесса. Фоновый процесс – это процесс, не имеющий возможности вводить данные с терминала. Пользователь может запустить любое число фо­новых процессов, не превосходящее заранее заданного в системе.
Кроме того, процессы можно условно разбить на три категории: си­стемные, фоновые (демоны) и прикладные (пользовательские). Фоно­вые процессы, предназначенные для обработки какой-либо активной деятельности (например, связанной с электронной почтой, веб-стра­ницами и др.), называются демонами [8].
Часто выделяют пять основных состояний процесса: выполнения
(действия), готовности к выполнению (готовности), заблокированный (иногда используется термин «ожидающий»), новый и завершающий-
ся. Взаимодействие состояний процесса приведено на рис. 2.3, где цифрами
1 – процесс заблокирован
в ожидании ввода;
2 – диспетчер выбрал дру-
гой процесс;
3 – диспетчер выбрал этот
Рис. 2.3. Модель переходов между
состояниями процесса
В целом концепцию процесса можно охарактеризовать свойством владения ресурсами, а также свойством планирования/выполнения. Соответственно по отношению к процессам операционная система вы­полняет планирование и диспетчеризацию. По но рассматривать независимо. Тогда единицу диспетчеризации можно назвать потоком (thread) или облегченным процессом (lightweight process), а единицу владения ресурсами – процессом (process) или за­данием (task). Тогда многопоточностью (multithreading) будет являться способность операционной системы поддерживать в рамках одного
процесс;
4 – входные данные стали
доступны.
показаны:
сути, эти свойства мож-
38
процесса несколько параллельных путей выполнения. Если рассматри­вать конкретную операционную систему, такую как Linux, то там про­цесс (задание) представляется структурой данных task_struct. В этой структуре данных информация разбивается на следующие категории: состояние, информация по планированию, идентификаторы, обмен ин­формацией между процессами, связи, файловая система, адресное про­странство и др.
Загрузка Linux завершается тем
, что на всех виртуальных консолях, предназначенных для работы пользователей, запускается программа getty, которая выводит приглашение и ожидает активности пользовате­ля. Введенное входное имя getty передает программе login – она вводит пароль и определяет, разрешено ли работать в системе с этим входным именем и этим паролем. Если login приходит к выводу, что работать можно, то он
запускает стартовый командный интерпретатор, посред­ством которого пользователь и управляет системой. Выполняющаяся программа называется в Linux процессом. Все процессы система реги­стрирует в таблице процессов, присваивая каждому уникальный номер – идентификатор процесса (process identificator, PID). Манипулируя про­цессами, система имеет дело именно с их идентификаторами: другого способа отличить один процесс от другого нет. Для просмотра
своих
процессов можно воспользоваться утилитой ps («process status»).
Запуск одного процесса вместо другого устроен в Linux с помощью системного вызова exec(). Старый процесс из памяти удаляется навсе­гда, вместо него загружается новый, при этом настройка окружения не меняется, даже PID остается прежним. Вернуться к выполнению ста­рого процесса невозможно, разве что запустить его снова с помощью того
же exec() (от «execute» – «исполнить»). При этом имя файла (про-
граммы), из которого запускается процесс, и собственное имя процесса
(в таблице процессов) могут и не совпадать. Собственное имя процесса – это такой же параметр командной строки, как и те, которые переда-
ются ему пользователем: для exec() требуется путь к файлу, полная ко­мандная
строка, ее нулевой (стартовый) элемент – название команды.
Параллельность работы процессов в Linux дискретная. Здесь и сей­час выполняться может столько процессов, сколько центральных про­цессоров есть в компьютере, например один. Дав этому одному про­цессу немного поработать, система запоминает все, что необходимо ему для работы, приостанавливает его, и запускает следующий про­цесс
, потом следующий и т. д. Возникает очередь процессов, ожидаю-
39
щих выполнения. Только что поработавший процесс помещается в ко­нец этой очереди, а следующий выбирается из ее начала. Когда очередь вновь доходит до того первого процесса, система вспоминает необхо­димые для его выполнения данные (они называются контекстом про­цесса), и он продолжает работать. Такая схема разделения времени между процессами носит название
псевдопараллелизма.
Особенности межпроцессного взаимодействия: в Unix-подобных системах используется системный вызов fork(), который создает точ­ную копию вызывающего процесса. После выполнения системного вы­зова fork() два процесса, родительский и дочерний, имеют единый об­раз памяти, единые строки описания конфигурации и одни и те же открытые файлы. После этого дочерний процесс обычно изменяет образ
памяти и запускает новую программу, выполняя системный вы­зов execve() или ему подобный. Для всех процессов существует ряд ситуаций, когда им приходится взаимодействовать. Классический пример – согласование действий процессов во время печати докумен­та, когда один процесс поставляет данные, а другой выводит их на печать. Если будет наблюдаться рассогласованность, то может воз­никнуть
ситуация, когда печать может начаться раньше, чем поступят
актуальные данные.
Одним из средств передачи информации между процессами явля­ются каналы – разновидность «псевдофайла», используемая для соеди­нения двух процессов. Информация записывается и считывается на разных концах канала. Существует два типа каналов: именованные и неименованные. Совместно использовать неименованные каналы мо­гут только
связанные друг с другом процессы; не связанные друг с дру­гом процессы могут совместно использовать только именованные каналы.
2.12. РАБОТА С ВНЕШНИМИ УСТРОЙСТВАМИ
В Linux работа с внешними устройствами, такими как USB­накопители, принтеры, сетевые адаптеры и другие, осуществляется через файловую систему, а именно через специальные файлы устройств в каталоге /dev. Эти файлы предоставляют
интерфейс для взаимодействия с аппаратным обеспечением. При подключении устройства система автоматически его распознает и создает соответ­ствующий файл устройства в /dev.
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]