мета-данные страницы
Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слеваПредыдущая версияСледующая версия | Предыдущая версия | ||
| notes:howlinuxworks:vol2 [2026/05/12 17:47] – radi0dev | notes:howlinuxworks:vol2 [2026/05/12 18:15] (текущий) – radi0dev | ||
|---|---|---|---|
| Строка 3: | Строка 3: | ||
| ===== 2.1 Оболочка Bourne Shell (bash): /bin/sh ===== | ===== 2.1 Оболочка Bourne Shell (bash): /bin/sh ===== | ||
| - | Оболочка (**shell**) | + | Оболочка (**shell**) |
| Существует множество различных оболочек Unix (bash, zsh, fish...), но все они - производные от оболочки Bourne shell (/bin/sh), стандартной оболочки, | Существует множество различных оболочек Unix (bash, zsh, fish...), но все они - производные от оболочки Bourne shell (/bin/sh), стандартной оболочки, | ||
| shell для корректной работы. | shell для корректной работы. | ||
| - | Система Linux использует расширенную версию оболочки Bourne под названием bash, или Bourne-again. Оболочка bash — это оболочка по умолчанию в большинстве дистрибутивов Linux, и каталог /bin/sh обычно указывает (через линк) на bash в системе Linux. | + | Система Linux использует расширенную версию оболочки Bourne под названием bash, или Bourne-again. Оболочка bash - это оболочка по умолчанию в большинстве дистрибутивов Linux, и каталог /bin/sh обычно указывает (через линк) на bash в системе Linux. |
| - | ===== 2.3. Основные команды ===== | + | ===== 2.3 Основные команды ===== |
| ==== ls ==== | ==== ls ==== | ||
| Строка 54: | Строка 54: | ||
| </ | </ | ||
| - | ===== 2.4. Перемещение по каталогам ===== | + | ===== 2.4 Перемещение по каталогам ===== |
| Пути в linux начинаются с / - корневого каталога (**root directory**). | Пути в linux начинаются с / - корневого каталога (**root directory**). | ||
| Строка 103: | Строка 103: | ||
| </ | </ | ||
| - | ===== 2.5. Команды среднего уровня ===== | + | ===== 2.5 Команды среднего уровня ===== |
| ==== grep ==== | ==== grep ==== | ||
| Строка 117: | Строка 117: | ||
| ==== less ==== | ==== less ==== | ||
| - | Просмотр больших файлов постранично. Пробел | + | Просмотр больших файлов постранично. Пробел |
| <code bash> | <code bash> | ||
| less / | less / | ||
| Строка 148: | Строка 148: | ||
| ==== find и locate ==== | ==== find и locate ==== | ||
| - | find — поиск в реальном времени. locate | + | find - поиск в реальном времени. locate |
| <code bash> | <code bash> | ||
| find dir -name file -print | find dir -name file -print | ||
| Строка 193: | Строка 193: | ||
| </ | </ | ||
| - | ===== 2.8. Переменные окружения и оболочки ===== | + | ===== 2.8 Переменные окружения и оболочки ===== |
| ==== Переменные оболочки ==== | ==== Переменные оболочки ==== | ||
| Строка 219: | Строка 219: | ||
| </ | </ | ||
| - | ===== 2.10. Специальные символы ===== | + | ===== 2.10 Специальные символы ===== |
| Общепринятые названия специальных символов, | Общепринятые названия специальных символов, | ||
| Строка 241: | Строка 241: | ||
| | '' | | '' | ||
| - | ===== 2.11. Редактирование в командной строке ===== | + | ===== 2.11 Редактирование в командной строке ===== |
| Клавиши со стрелками работают для редактирования, | Клавиши со стрелками работают для редактирования, | ||
| Строка 256: | Строка 256: | ||
| | Ctrl+K | Стереть от курсора до конца строки | | | Ctrl+K | Стереть от курсора до конца строки | | ||
| | Ctrl+Y | Вставить стертый текст | | | Ctrl+Y | Вставить стертый текст | | ||
| + | |||
| + | ===== 2.13 Онлайн-поддержка ===== | ||
| + | |||
| + | Страницы руководства (**man pages**) - основной источник документации. | ||
| + | |||
| + | Просмотр справки для команды: | ||
| + | <code bash> | ||
| + | man ls | ||
| + | </ | ||
| + | |||
| + | Поиск по ключевому слову: | ||
| + | <code bash> | ||
| + | man -k keyword | ||
| + | # Пример: | ||
| + | </ | ||
| + | |||
| + | **Разделы руководства: | ||
| + | |||
| + | ^ Раздел ^ Описание ^ | ||
| + | | 1 | Пользовательские команды | | ||
| + | | 2 | Системные вызовы | | ||
| + | | 3 | Библиотеки программирования Unix | | ||
| + | | 4 | Интерфейсы устройств и драйверы | | ||
| + | | 5 | Файлы конфигурации системы | | ||
| + | | 6 | Игры | | ||
| + | | 7 | Форматы файлов, | ||
| + | | 8 | Системные команды и серверы | | ||
| + | |||
| + | Просмотр определённого раздела: | ||
| + | <code bash> | ||
| + | man 5 passwd | ||
| + | </ | ||
| + | |||
| + | **Дополнительная справка: | ||
| + | * **--help** или **-h** - краткая справка для команды | ||
| + | * **info command** - документация формата GNU info | ||
| + | * **/ | ||
| + | |||
| + | ===== 2.14 Ввод и вывод командной оболочки ===== | ||
| + | |||
| + | ==== Перенаправление стандартного вывода ==== | ||
| + | |||
| + | Отправить вывод в файл (перезаписать): | ||
| + | <code bash> | ||
| + | command > file | ||
| + | </ | ||
| + | |||
| + | Добавить вывод в конец файла: | ||
| + | <code bash> | ||
| + | command >> file | ||
| + | </ | ||
| + | |||
| + | Конвейер (pipe) - отправить вывод одной команды в другую: | ||
| + | <code bash> | ||
| + | head / | ||
| + | </ | ||
| + | |||
| + | ==== Стандартная ошибка (stderr) ==== | ||
| + | |||
| + | Перенаправить ошибку в файл: | ||
| + | <code bash> | ||
| + | ls /fffffffff > f 2> e | ||
| + | </ | ||
| + | |||
| + | Перенаправить ошибку в того же места, что и стандартный вывод: | ||
| + | <code bash> | ||
| + | ls /fffffffff > f 2>&1 | ||
| + | </ | ||
| + | |||
| + | Идентификаторы потоков: | ||
| + | |||
| + | ==== Перенаправление ввода ==== | ||
| + | |||
| + | Направить файл на стандартный ввод: | ||
| + | <code bash> | ||
| + | head < / | ||
| + | </ | ||
| + | |||
| + | **Примечание: | ||
| + | |||
| + | ===== 2.16 Перечисление процессов и управление ими ===== | ||
| + | |||
| + | **Процесс** - запущенная программа с уникальным числовым идентификатором (**PID**). | ||
| + | |||
| + | Просмотр процессов: | ||
| + | <code bash> | ||
| + | ps | ||
| + | </ | ||
| + | |||
| + | Основные поля вывода: | ||
| + | |||
| + | ^ Поле ^ Описание ^ | ||
| + | | PID | Идентификатор процесса | | ||
| + | | TTY | Терминальное устройство | | ||
| + | | STAT | Состояние (S=sleeping, | ||
| + | | TIME | Процессорное время (мин: | ||
| + | | COMMAND | Команда запуска | | ||
| + | |||
| + | ==== Параметры команды ps ==== | ||
| + | |||
| + | * **ps x** - ваши процессы | ||
| + | * **ps ax** - все процессы в системе | ||
| + | * **ps u** - подробная информация | ||
| + | * **ps w** - полные имена команд | ||
| + | * **ps aux** - комбинация параметров | ||
| + | |||
| + | Проверка конкретного процесса: | ||
| + | <code bash> | ||
| + | ps $$ # Текущая оболочка | ||
| + | </ | ||
| + | |||
| + | ==== Завершение процесса ==== | ||
| + | |||
| + | Базовое завершение: | ||
| + | <code bash> | ||
| + | kill pid | ||
| + | </ | ||
| + | |||
| + | ^ Сигнал ^ Описание ^ | ||
| + | | TERM (15) | Завершение (по умолчанию) | | ||
| + | | STOP | Приостановка процесса | | ||
| + | | CONT | Продолжение процесса | | ||
| + | | INT (2) | Прерывание (аналог Ctrl+C) | | ||
| + | | KILL (9) | Принудительное завершение (не игнорируется) | | ||
| + | |||
| + | <code bash> | ||
| + | kill -STOP pid # Приостановить | ||
| + | kill -CONT pid # Продолжить | ||
| + | kill -9 pid # Принудительное завершение | ||
| + | kill -l # Список сигналов | ||
| + | </ | ||
| + | |||
| + | Используйте KILL только в крайнем случае! | ||
| + | |||
| + | ==== Управление заданиями ==== | ||
| + | |||
| + | * **Ctrl+Z** - отправить сигнал TSTP (приостановка) | ||
| + | * **fg** - вывести на передний план | ||
| + | * **bg** - переместить на задний план | ||
| + | * **jobs** - список приостановленных процессов | ||
| + | |||
| + | ==== Фоновые процессы ==== | ||
| + | |||
| + | Запуск процесса в фоне: | ||
| + | <code bash> | ||
| + | gunzip file.gz & | ||
| + | </ | ||
| + | |||
| + | Оболочка вернёт приглашение и выведет PID процесса. Процесс продолжит работу после выхода из системы. | ||
| + | |||
| + | Для удалённого сеанса используйте **nohup** для сохранения процесса после отключения. | ||
| + | |||
| + | **Проблемы фоновых процессов: | ||
| + | * Процесс может ожидать ввода → использовать перенаправление (раздел 2.14) | ||
| + | * Вывод может помешать текущей работе → перенаправить в файл | ||
| + | |||
| + | Обновление экрана терминала: | ||
| + | * **Ctrl+L** - очистка и обновление (bash) | ||
| + | * **Ctrl+R** - обновление строки (или поиск истории) | ||
| + | |||
| + | |||
| + | ===== 2.17 Режимы файлов и права доступа ===== | ||
| + | |||
| + | Каждый файл Unix имеет права доступа, | ||
| + | |||
| + | * **Тип файла** - первый символ: | ||
| + | * **Права пользователя** - владельца файла | ||
| + | * **Права группы** - для пользователей в группе файла | ||
| + | * **Права остальных** - для всех прочих пользователей | ||
| + | |||
| + | Каждый набор прав содержит до 3 символов: | ||
| + | ^ Символ ^ Значение ^ | ||
| + | | r | Чтение | | ||
| + | | w | Запись | | ||
| + | | x | Выполнение | | ||
| + | | - | Нет прав | | ||
| + | |||
| + | При наличии '' | ||
| + | |||
| + | ==== Изменение прав доступа ==== | ||
| + | |||
| + | Используйте команду '' | ||
| + | |||
| + | <code bash> | ||
| + | chmod g+r file # добавить чтение группе | ||
| + | chmod o+r file # добавить чтение остальным | ||
| + | chmod go+r file # одной командой | ||
| + | chmod go-r file # удалить права | ||
| + | chmod 644 file # абсолютный режим (восьмеричная система) | ||
| + | </ | ||
| + | |||
| + | **Частые абсолютные режимы: | ||
| + | |||
| + | ^ Режим ^ Назначение ^ Применение ^ | ||
| + | | 644 | u: rw, g: r, o: r | Файлы | | ||
| + | | 600 | u: rw, g: -, o: - | Файлы (приватные) | | ||
| + | | 755 | u: rwx, g: rx, o: rx | Каталоги, | ||
| + | | 700 | u: rwx, g: -, o: - | Каталоги, | ||
| + | | 711 | u: rwx, g: x, o: x | Каталоги (доступны только владельцу) | | ||
| + | |||
| + | **Права каталогов: | ||
| + | |||
| + | **Маска по умолчанию (umask):** | ||
| + | |||
| + | <code bash> | ||
| + | umask 022 # все видят созданные файлы | ||
| + | umask 077 # только владелец видит созданные файлы | ||
| + | </ | ||
| + | |||
| + | Поместите в файл запуска для постоянного применения (см. глава 13). | ||
| + | |||
| + | ==== Использование символических ссылок ==== | ||
| + | |||
| + | **Символическая ссылка** (symlink) - это файл-псевдоним, | ||
| + | |||
| + | В '' | ||
| + | < | ||
| + | lrwxrwxrwx 1 ruser users 11 Feb 27 13:52 somedir -> / | ||
| + | </ | ||
| + | |||
| + | При доступе к '' | ||
| + | |||
| + | Создание: | ||
| + | |||
| + | <code bash> | ||
| + | ln -s target linkname | ||
| + | </ | ||
| + | |||
| + | * **target** - путь на файл/ | ||
| + | * **linkname** - имя создаваемой ссылки | ||
| + | * **флаг -s** - обязателен для символической ссылки | ||
| + | |||
| + | Символические vs жесткие ссылки: | ||
| + | |||
| + | ===== 2.18 Архивирование и сжатие файлов ===== | ||
| + | |||
| + | Две основные утилиты для работы с архивами и сжатием: | ||
| + | |||
| + | ==== Утилита gzip ==== | ||
| + | |||
| + | **gzip** (GNU Zip) - стандартная программа сжатия файлов. Файлы заканчиваются на '' | ||
| + | |||
| + | <code bash> | ||
| + | gunzip file.gz | ||
| + | gzip file # сжать файл | ||
| + | </ | ||
| + | |||
| + | **gzip не создает архивы** (не упаковывает несколько файлов в один)! | ||
| + | |||
| + | ==== Утилита tar ==== | ||
| + | |||
| + | **tar** - создает архивы из нескольких файлов и каталогов. | ||
| + | |||
| + | <code bash> | ||
| + | tar cvf archive.tar file1 file2 ... # создание архива | ||
| + | tar xvf archive.tar | ||
| + | tar tvf archive.tar | ||
| + | </ | ||
| + | |||
| + | ^ Флаг ^ Значение ^ | ||
| + | | c | Режим создания архива (create) | | ||
| + | | x | Режим извлечения (extract) | | ||
| + | | t | Режим содержания (table of contents) | | ||
| + | | v | Подробный вывод (verbose); vv - с размерами и правами | | ||
| + | | f | Файл-параметр; | ||
| + | | p | Сохранить права доступа при распаковке | | ||
| + | |||
| + | **Перед распаковкой всегда проверьте архив флагом '' | ||
| + | |||
| + | **Примечание: | ||
| + | |||
| + | ==== Сжатые архивы (.tar.gz) ==== | ||
| + | |||
| + | Для работы со сжатым архивом - сначала '' | ||
| + | |||
| + | <code bash> | ||
| + | gunzip file.tar.gz | ||
| + | tar xvf file.tar | ||
| + | </ | ||
| + | |||
| + | Или в один конвейер: | ||
| + | |||
| + | <code bash> | ||
| + | zcat file.tar.gz | tar xvf - | ||
| + | </ | ||
| + | |||
| + | **Быстрое сокращение** - используйте флаг '' | ||
| + | |||
| + | <code bash> | ||
| + | tar ztvf file.tar.gz | ||
| + | tar zxvf file.tar.gz | ||
| + | tar zcvf file.tar.gz file1 file2 # создание | ||
| + | </ | ||
| + | |||
| + | **Примечание: | ||
| + | |||
| + | ==== Утилита zcat ==== | ||
| + | |||
| + | **zcat** действует как '' | ||
| + | |||
| + | ==== Другие утилиты сжатия ==== | ||
| + | |||
| + | ^ Утилита ^ Суффикс ^ Распаковка ^ Свойства ^ | ||
| + | | bzip2 | .bz2 | bunzip2 | Сильнее сжимает текст, медленнее gzip | | ||
| + | | xz | .xz | unxz | Сильнее сжимает текст, медленнее gzip | | ||
| + | | zip/unzip | .zip | unzip | Совместимы с Windows | | ||
| + | | compress | .z | gunzip | Древний стандарт Unix (только распаковка) | | ||
| + | |||
| + | ===== 2.19 Основная иерархия каталогов Linux ===== | ||
| + | |||
| + | Структура каталогов определена Стандартом иерархии файловой системы (FHS). Вот основные подкаталоги корневого каталога ''/'' | ||
| + | |||
| + | ^ Каталог ^ Описание ^ | ||
| + | | /bin | Исполняемые файлы основных Unix-команд ('' | ||
| + | | /dev | Файлы устройств (см. глава 3). | | ||
| + | | /etc | Центральный каталог конфигурации системы: | ||
| + | | /home | Домашние (личные) каталоги обычных пользователей. | | ||
| + | | /lib | Библиотеки (library). Содержит разделяемые библиотеки, | ||
| + | | /proc | Системная статистика через интерфейс каталогов/ | ||
| + | | /run | Данные времени выполнения системы: | ||
| + | | /sys | Интерфейс к устройствам и системе (см. глава 3). | | ||
| + | | /sbin | Системные исполняемые файлы для администраторов. Обычные пользователи не имеют доступа. | | ||
| + | | /tmp | Временные файлы. Любой пользователь может читать/ | ||
| + | | /usr | Основная иерархия системы Linux (см. раздел ниже). Содержит программы и данные пользователей. | | ||
| + | | /var | Переменные данные: | ||
| + | | /boot | Файлы загрузчика и ядра. Первый этап запуска Linux (см. глава 5). | | ||
| + | | /media | Базовый каталог для съемных носителей (флеш-накопители). | | ||
| + | | /opt | Дополнительное ПО третьих производителей. Используется не всеми системами. | | ||
| + | |||
| + | ==== Каталог /usr ==== | ||
| + | |||
| + | Содержит большую часть пользовательских программ и данных системы. Структура повторяет корневой каталог (например, | ||
| + | |||
| + | ^ Каталог ^ Описание ^ | ||
| + | | /usr/bin | Пользовательские исполняемые файлы. | | ||
| + | | /usr/sbin | Системные исполняемые файлы. | | ||
| + | | /usr/lib | Библиотеки (статические, | ||
| + | | / | ||
| + | | /usr/local | Место для установки собственного ПО администраторами. Структура как в / и /usr. | | ||
| + | | /usr/man | Страницы руководства. | | ||
| + | | /usr/share | Файлы, совместимые со всеми Unix-системами. Вспомогательные данные, | ||
| + | |||
| + | **Историческая причина: | ||
| + | |||
| + | ==== Местонахождение ядра ==== | ||
| + | |||
| + | **Ядро Linux** обычно расположено как двоичный файл: | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Загрузчик (boot loader) загружает этот файл в память при запуске системы (см. глава 5). После запуска основной файл ядра не используется. | ||
| + | |||
| + | **Загружаемые модули ядра** расположены в папке: | ||
| + | |||
| + | < | ||
| + | / | ||
| + | </ | ||
| + | |||
| + | Ядро загружает и выгружает эти модули по требованию во время работы системы. | ||
| + | |||