Product SiteDocumentation Site

⁠Глава 39. Общие принципы работы ОС

39.1. Процессы и файлы
39.1.1. Процессы функционирования ОС
39.1.2. Файловая система ОС
39.1.3. Организация файловой структуры
39.1.4. Иерархическая организация файловой системы
39.1.5. Имена дисков и разделов
39.1.6. Разделы, необходимые для работы ОС
39.1.7. Утилиты для работы с файловой системой
39.2. Работа с наиболее часто используемыми компонентами
39.2.1. Командные оболочки (интерпретаторы)
39.2.2. Командная оболочка Bash
39.2.3. Базовые команды оболочки Bash
39.3. Использование многозадачности

⁠39.1. Процессы и файлы

ОС Simply Linux является многопользовательской интегрированной системой. Это значит, что она разработана в расчете на одновременную работу нескольких пользователей.
Пользователь может либо сам работать в системе, выполняя некоторую последовательность команд, либо от его имени могут выполняться прикладные процессы.
Пользователь взаимодействует с системой через командный интерпретатор, который представляет собой, как было сказано выше, прикладную программу, которая принимает от пользователя команды или набор команд и транслирует их в системные вызовы к ядру системы. Интерпретатор позволяет пользователю просматривать файлы, передвигаться по дереву файловой системы, запускать прикладные процессы. Все командные интерпретаторы UNIX имеют развитый командный язык и позволяют писать достаточно сложные программы, упрощающие процесс администрирования системы и работы с ней.

⁠39.1.1. Процессы функционирования ОС

Все программы, которые выполняются в текущий момент времени, называются процессами. Процессы можно разделить на два основных класса: системные процессы и пользовательские процессы.
Системные процессы — программы, решающие внутренние задачи ОС, например, организацию виртуальной памяти на диске или предоставляющие пользователям те или иные сервисы (процессы-службы).
Пользовательские процессы — процессы, запускаемые пользователем из командного интерпретатора для решения задач пользователя или управления системными процессами. Linux изначально разрабатывался как многозадачная система. Он использует технологии, опробованные и отработанные другими реализациями UNIX, которые существовали ранее.
Фоновый режим работы процесса — режим, когда программа может работать без взаимодействия с пользователем. В случае необходимости интерактивной работы с пользователем (в общем случае) процесс будет «остановлен» ядром и работа его продолжается только после переведения его в «нормальный» режим работы.

⁠39.1.2. Файловая система ОС

В ОС использована файловая система Linux, которая, в отличие от файловых систем DOS и Windows(™), является единым деревом. Корень этого дерева — каталог, называемый root (рут) и обозначаемый /. Части дерева файловой системы могут физически располагаться в разных разделах разных дисков или вообще на других компьютерах — для пользователя это прозрачно. Процесс присоединения файловой системы раздела к дереву называется монтированием, удаление — размонтированием. Например, файловая система CD-ROM в изделии монтируется по умолчанию в каталог /media/cdrom (путь в изделии обозначается с использованием /, а не \, как в DOS/Windows). Текущий каталог обозначается ./.
Файловая система изделия содержит каталоги первого уровня:
  • /bin — командные оболочки (shell), основные утилиты;
  • /boot — содержит ядро системы;
  • /dev — псевдофайлы устройств, позволяющие работать с ними напрямую;
  • /etc — файлы конфигурации;
  • /home — личные каталоги пользователей;
  • /lib — системные библиотеки, модули ядра;
  • /media — каталоги для монтирования файловых систем сменных устройств;
  • /mnt  — каталоги для монтирования файловых систем сменных устройств и внешних файловых систем;
  • /proc — файловая система на виртуальном устройстве, её файлы содержат информацию о текущем состоянии системы;
  • /root — личный каталог администратора системы;
  • /sbin — системные утилиты;
  • /sys — файловая система, содержащая информациюо текущем состоянии системы;
  • /usr — программы и библиотеки, доступные пользователю;
  • /var — рабочие файлы программ, очереди, журналы;
  • /tmp — временные файлы.

⁠39.1.3. Организация файловой структуры

Система домашних каталогов пользователей помогает организовывать безопасную работу пользователей в многопользовательской системе. Вне своего домашнего каталога пользователь обладает минимальными правами (обычно чтение и выполнение файлов) и не может нанести ущерб системе, например, удалив или изменив файл.
Кроме файлов, созданных пользователем, в его домашнем каталоге обычно содержатся персональные конфигурационные файлы некоторых программ.
Маршрут (путь) — это последовательность имён каталогов, представляющая собой путь в файловой системе к данному файлу, где каждое следующее имя отделяется от предыдущего наклонной чертой (слешем). Если название маршрута начинается со слеша, то путь в искомый файл начинается от корневого каталога всего дерева системы. В обратном случае, если название маршрута начинается непосредственно с имени файла, то путь к искомому файлу должен начаться от текущего каталога (рабочего каталога).
Имя файла может содержать любые символы за исключением косой черты (/). Однако следует избегать применения в именах файлов большинства знаков препинания и непечатаемых символов. При выборе имен файлов рекомендуем ограничиться следующими символам:
  • строчные и ПРОПИСНЫЕ буквы. Следует обратить внимание на то, что регистр всегда имеет значение;
  • символ подчеркивания (_);
  • точка (.).
Для удобства работы точку можно использовать для отделения имени файла от расширения файла. Данная возможность может быть необходима пользователям или некоторым программам, но не имеет значение для shell.

⁠39.1.4. Иерархическая организация файловой системы

Каталог /:
  • /boot — место, где хранятся файлы, необходимые для загрузки ядра системы;
  • /lib — место, где располагаются файлы динамических библиотек, необходимых для работы большей части приложений, и подгружаемые модули ядра;
  • /bin — минимальный набор программ, необходимых для работы в системе;
  • /sbin — набор программ для административной работы с системой (программы, необходимые только суперпользователю);
  • /home — место, где располагаются домашние каталоги пользователей;
  • /etc — в данном каталоге обычно хранятся общесистемные конфигурационные файлы для большинства программ в системе;
  • /etc/rc?.d, /etc/init.d, /etc/rc.boot, /etc/rc.d — директории, где расположены командные файлы, выполняемые при запуске системы или при смене её режима работы;
  • /etc/passwd — база данных пользователей, в которой содержится информация об имени пользователя, его настоящем имени, личном каталоге, его зашифрованный пароль и другие данные;
  • /etc/shadow — теневая база данных пользователей. При этом информация из файла /etc/passwd перемещается в /etc/shadow, который недоступен для чтения всем, кроме пользователя root. В случае использования альтернативной схемы управления теневыми паролями (TCB), все теневые пароли для каждого пользователя располагаются в директории /etc/tcb/имя пользователя/shadow;
  • /dev — в этом каталоге находятся файлы устройств. Файлы в /dev создаются сервисом udev;
  • /usr — обычно файловая система /usr достаточно большая по объему, так как все программы установлены именно здесь. Вся информация в каталоге /usr помещается туда во время установки системы. Отдельно устанавливаемые пакеты программ и другие файлы размещаются в каталоге.
  • /tmp — временный каталог, необходимый некоторым приложениям.
  • /proc — файловая система /proc является виртуальной, и в действительности она не существует на диске. Ядро создает её в памяти компьютера. Система /proc предоставляет информацию о системе.
Некоторые подкаталоги системы /usr рассмотрены ниже:
  • /usr/bin — практически все команды, хотя некоторые находятся в /bin или в /usr/local/bin;
  • /usr/sbin — команды, используемые при администрировании системы и не предназначенные для размещения в файловой системе root;
  • /usr/local — место, где рекомендуется размещать файлы, установленные без использования пакетных менеджеров, внутренняя организация каталогов практически такая же, как и корневого каталога;
  • /usr/man — каталог, где хранятся файлы справочного руководства man;
  • /usr/share — каталог для размещения общедоступных файлов большей части приложений.
Каталог /var:
  • /var/log — место, где хранятся файлы аудита работы системы и приложений;
  • /var/spool — каталог для хранения файлов, находящихся в очереди на обработку для того или иного процесса (очередь на печать, отправку почты и т.д.).

⁠39.1.5. Имена дисков и разделов

Все физические устройства вашего компьютера отображаются в каталог /dev файловой системы изделия (об этом — ниже). Диски (в том числе IDE/SATA/SCSI жёсткие диски, USB-диски) имеют имена:
  • /dev/sda — первый диск;
  • /dev/sdb — второй диск;
  • и т.д.
Диски обозначаются /dev/sdX, где X — a, b, c, d, e, … в зависимости от порядкового номера диска на шине.
Раздел диска обозначается числом после его имени. Например, /dev/sdb4 — четвертый раздел второго диска.

⁠39.1.6. Разделы, необходимые для работы ОС

Для работы ОС необходимо создать на жестком диске (дисках) по крайней мере два раздела: корневой (то есть тот, который будет содержать каталог /) и раздел подкачки (swap). Размер последнего, как правило, составляет от однократной до двукратной величины оперативной памяти компьютера. Если у вас много свободного места на диске, то можно создать отдельные разделы для каталогов /usr, /home, /var.

⁠39.1.7. Утилиты для работы с файловой системой

mkfs — создание файловой системы. В действительности это программа-оболочка, вызывающая для каждого конкретного типа файловых систем свою программу. Например, для файловой системы ext4 будет вызвана mkfs.ext4.
fsck — используется для проверки и восстановления, если это возможно, целостности файловых систем.
df — формирует отчет о доступном и использованном дисковом пространстве на файловых системах. Без аргументов, df выдает отчет по доступному и использованному пространству для всех файловых систем (всех типов), которые смонтированы в данный момент. В противном случае, df на каждый файл, заданный как аргумент, выдается отчет по файловой системе, которая его содержит.
du — формирует отчет об использовании дискового пространства заданными файлами, а также каждым каталогом иерархии подкаталогов каждого указанного каталога. Здесь под использованным дисковым пространством понимается пространство, используемое для всей иерархии подкаталогов указанного каталога. Запущенная без аргументов, команда du выдает отчет о дисковом пространстве для текущего каталога.
Часто используемые утилиты:
  • mount — монтирование файловых систем;
  • umount — размонтирование файловых систем;
  • find — поиск файлов в директориях;
  • which — поиск файла, который будет запущен при выполнении данной команды;
  • cd — смена текущего каталога/директории;
  • pwd — показ текущего каталога/директории;
  • mkdir — создание каталога;
  • ls — выдача информации о файлах или каталогах;
  • cp — копирование файлов;
  • mv — перемещение/переименование файлов;
  • cat — вывод содержимого заданных файлов на стандартный вывод;
  • more — программа постраничного просмотра файлов;
  • ln — создание ссылок (альтернативных имен) для файлов;
  • file — определение типа файла;
  • chmod — изменение прав доступа к файлам;
  • chown — смена прав владения (пользовательских и групповых) для файлов;
  • umask — установка маски прав доступа для вновь создаваемых файлов;
  • chattr — изменение атрибутов файлов;
  • lsattr — просмотр атрибутов файлов.