Linux Essentials — основы работы в Linux: от первого открытия терминала до файлов, прав, пакетов, процессов, служб и сети. Тема основана на приложенной презентации из 28 слайдов; команды и пояснения дополнены для самостоятельной практики.
1. Unix, GNU, Linux и дистрибутивы
Unix — историческая основа; проект GNU предоставляет инструменты и свободное ПО; Linux — ядро, управляющее процессором, памятью, дисками, устройствами и сетью. Дистрибутив собирает ядро, системные инструменты, пакеты и настройки в готовую систему. Ubuntu основана на Debian; Fedora и RHEL относятся к семейству Red Hat. Драйверы связывают ядро с оборудованием.
- Коммерческое ПО продаётся за деньги, но может иметь открытый код. Freeware бесплатно в использовании, но не обязательно открыто; Shareware — пробная или ограниченная версия.
- Open Source даёт доступ к исходному коду по условиям лицензии. FSF продвигает свободы пользователя, OSI определяет принципы открытого кода. GPL требует сохранять условия лицензии при распространении охватываемых ею производных работ.
2. Терминал, оболочка и справка
Терминал — окно для работы; оболочка разбирает команды и запускает программы. Часто используется Bash, также есть zsh и fish. /etc/shells перечисляет зарегистрированные оболочки. В отличие от CMD, Linux использует / в путях и различает регистр: Notes.txt и notes.txt — разные имена. uname -r показывает версию ядра, а /etc/os-release — дистрибутив.
3. Пути, файлы и папки
pwd показывает текущую папку; ls -la — содержимое, включая скрытые файлы, владельцев и права; cd меняет папку. Путь от / — абсолютный, остальные считаются от текущей папки. . — текущая папка, .. — родительская, ~ — домашняя. Имена с пробелами заключайте в кавычки.
- mkdir -p создаёт промежуточные папки. touch создаёт пустой файл, если его нет, иначе обновляет время. cp копирует; mv перемещает или переименовывает.
- Если backup уже существует, cp -r project backup/ создаёт backup/project. Повторный запуск может перезаписать файлы — сначала проверьте назначение.
- /home — домашние папки пользователей; /etc — настройки; /var/log — журналы; /tmp — временные файлы; /root — домашняя папка root. Имя с точкой в начале скрыто в обычном ls.
4. Редактирование, поиск и перенаправление вывода
nano notes.txt открывает редактор, если он установлен: Ctrl+O и Enter сохраняют, Ctrl+X закрывает. cat удобен для короткого файла, less — для чтения по страницам (q — выход). grep ищет текст внутри файлов, find — файлы по признакам. Флаги grep -i, -n, -r означают поиск без учёта регистра, номера строк и поиск по папкам.
- > заменяет прежнее содержимое; >> дописывает в конец. | передаёт вывод следующей команде. && запускает следующую только при успехе предыдущей.
- tail -f ждёт новые строки; остановите его через Ctrl+C. grep в примере должен показать 2:ERROR: test. Кавычки вокруг *.log не дают оболочке раскрыть шаблон до запуска find.
5. Пользователи, права и sudo
ls -l показывает тип, права и владельца. Три тройки прав относятся к владельцу, группе и остальным: r=4 — чтение, w=2 — запись, x=1 — запуск. Для папки x позволяет проход внутрь; удаление файла зависит от прав родительской папки. chmod меняет права, chown — владельца и группу.
6. Пакеты и процессы
В Debian/Ubuntu apt update обновляет список пакетов, а не сами программы. apt install устанавливает, apt upgrade обновляет установленные, apt remove удаляет. Перед подтверждением читайте список изменений. ps aux показывает процессы и PID; top — ресурсы в реальном времени (q — выход). kill PID отправляет SIGTERM, запрос штатного завершения; kill -9 с SIGKILL — крайний вариант.
7. Службы, журналы, сеть и SSH
Служба — программа, работающая в фоне. systemctl status проверяет состояние, start запускает сейчас, enable включает запуск при загрузке, но не обязательно немедленно. journalctl читает журналы systemd. Для примеров нужен установленный SSH-сервер: в Ubuntu/Debian пакет openssh-server и служба ssh; в Fedora/RHEL служба обычно называется sshd.
ip a показывает адреса и интерфейсы; ip r — маршруты и шлюз. ping по IP проверяет ответ ICMP, отсутствие ответа не доказывает отключение сервера. getent hosts проверяет разрешение имён согласно настройкам системы, включая /etc/hosts и DNS. Для своего разрешённого сервера подставьте имя и адрес в ssh user@server-ip; проверьте службу, порт, пароль или ключ и отпечаток сервера.
- No such file — проверьте pwd, путь и регистр. command not found — написание, установку программы и PATH.
- Permission denied — проверьте id и ls -l; для SSH также пользователя и способ входа. Connection refused — проверьте слушающую службу и порт; межсетевой экран тоже может отклонить соединение.
8. Самостоятельная практика — 15 минут
В учебной машине создайте рабочую папку, журнал, резервную копию и личный файл. Выполните один раз; если уже делали примеры выше, сначала проверьте файлы, чтобы не перезаписать важное.
- grep выводит 2:ERROR: test; find находит журнал и его резервную копию.
- ls -l показывает -rw------- у private.txt. Владелец — ваш пользователь; размер пустого файла — 0.
- Объясните: что изменится, если заменить >> на >? Почему cp не то же самое, что mv? Проверяйте на пробном файле.
9. Первый сценарий Bash
В учебной папке откройте nano hello.sh, вставьте следующий текст и сохраните. Первая строка выбирает интерпретатор; printf печатает текст и перевод строки.
После сохранения дайте владельцу право запуска и выполните файл. ./ означает файл в текущей папке; ожидаемый результат — Hello, Linux!.