LINUX
WITHOUT
FEAR.
Большая практическая база знаний по Linux. От первой команды в терминале до диагностики серверов, Docker, systemd, SSH, сетей, файловых систем, процессов и безопасности.
Без бессмысленной теории. Здесь собраны команды и методы, которые действительно нужны при работе с Linux.
ЧТО НУЖНО
ИСПРАВИТЬ?
Ищите по задаче или команде: systemctl, Docker, SSH, порт, диск, RAM, DNS, chmod, journalctl.
БОЛЬШАЯ БАЗА
LINUX.
Всё разбито по реальным задачам: от файлов и процессов до сети, контейнеров и диагностики серверов.
Основы
Терминал, файловая система, пути, sudo, пользователи и первые команды.
Сеть
IP, маршруты, DNS, порты, интерфейсы и диагностика соединений.
SSH
Ключи, подключения, SCP, конфигурация и обслуживание удалённых машин.
systemd
Сервисы, unit-файлы, автозапуск, timers и системные журналы.
Docker
Контейнеры, Compose, volumes, networks, images и диагностика.
Диски
Разделы, файловые системы, mount, df, du, lsblk и заполненный диск.
Процессы
CPU, RAM, load average, top, ps, kill, nice и мониторинг ресурсов.
Безопасность
Права, firewall, SSH, обновления и базовый аудит Linux-сервера.
Bash
Pipes, grep, переменные, циклы, скрипты и автоматизация.
Логи
journalctl, dmesg, системные ошибки и анализ журналов.
Пакеты
APT, DNF, Pacman, зависимости, установка и обновления.
Сервер
Cron, backup, веб-сервисы, мониторинг и обслуживание VPS.
НЕ НУЖНО
БОЯТЬСЯ
ТЕРМИНАЛА.
Linux становится намного проще, когда Вы понимаете несколько базовых вещей: файловую систему, права, процессы, сервисы и сеть.
Большинство проблем решается не сотней случайных команд, а последовательной диагностикой: определить симптом, проверить состояние, найти журнал, изменить только нужную часть системы и проверить результат.
КОМАНДЫ,
КОТОРЫЕ НУЖНЫ.
Не случайный список из сотен команд, а основные инструменты, которые постоянно используются при работе с Linux.
ВЫБЕРИТЕ
СВОЙ DISTRO.
Большая часть Linux одинакова. Главное различие для начинающего пользователя - пакеты, релизная модель и некоторые системные инструменты.
Ubuntu
Один из самых популярных вариантов для desktop, VPS и облачных серверов.
sudo apt update
sudo apt upgrade
sudo apt install PACKAGE
sudo apt remove PACKAGE
Debian
Стабильная система, часто используемая как основа серверной инфраструктуры.
sudo apt update
apt search PACKAGE
apt list --installed
sudo apt autoremove
Arch
Минималистичный rolling-release дистрибутив с большим контролем над системой.
sudo pacman -Syu
sudo pacman -S PACKAGE
sudo pacman -R PACKAGE
pacman -Q
Fedora
Современный RPM-дистрибутив с быстрым внедрением новых Linux-технологий.
sudo dnf upgrade
sudo dnf install PACKAGE
sudo dnf remove PACKAGE
dnf search PACKAGE
ГАЙДЫ ДЛЯ
РЕАЛЬНЫХ ЗАДАЧ.
То, с чем сталкиваются пользователи Linux и администраторы серверов каждый день.
Настройка SSH-ключей
Создание ключа, копирование публичной части и проверка входа.
Свой systemd service
ExecStart, User, WorkingDirectory, Restart и автозапуск.
Диск заполнен на 100%
Как найти, куда ушло место, и не удалить нужные данные.
Docker Compose
Сервисы, volumes, networks, restart policy и диагностика.
Есть сеть, но нет интернета
IP, default route, DNS и пошаговая диагностика.
chmod 755, 644 и rwx
Как работают Linux permissions и почему не стоит везде ставить 777.
Высокий Load Average
Как отличить CPU bottleneck от ожидания I/O.
Читаем journalctl
Логи сервиса, текущей загрузки, диапазоны времени и приоритеты.
Backup через rsync
Копирование данных, удалённый сервер и исключения.
default via 192.168.1.1 dev eth0
192.168.1.0/24 dev eth0 proto kernel
root@server:~# ss -lnt
LISTEN 0 4096 0.0.0.0:22
LISTEN 0 4096 0.0.0.0:80
LISTEN 0 4096 0.0.0.0:443
СЕТЬ
БЕЗ МАГИИ.
Не нужно сразу менять DNS, firewall и конфигурацию сети. Сначала определите, на каком уровне возникает проблема.
ДИАГНОСТИКА
ПО ШАГАМ.
Набор проверок, который полезен почти при любой сетевой проблеме Linux.
Проверяем интерфейс
Сначала посмотрите, какие интерфейсы есть в системе и находятся ли они в состоянии UP.
Проверяем маршрут
Для обычного доступа в интернет системе чаще всего нужен default route.
Отделяем DNS от сети
Если IP доступен, но доменное имя нет, проблема может быть в разрешении имён.
Проверяем приложение
Если сервер доступен, но конкретный сервис нет, убедитесь, что порт действительно слушается.
Проверяем HTTP отдельно
curl позволяет увидеть DNS resolution, подключение, TLS и HTTP-ответ, поэтому часто намного полезнее обычного ping при диагностике веб-сервиса.
СЕРВИСЫ
ПОД КОНТРОЛЕМ.
systemctl управляет состоянием systemd units. Если приложение не работает, status обычно должен быть одной из первых команд.
КОНТЕЙНЕРЫ
БЕЗ ПАНИКИ.
Основные команды Docker для запуска, проверки состояния и диагностики контейнеров.
docker psЗапущенные контейнерыdocker ps -aВсе контейнерыdocker restart NAMEПерезапускdocker inspect NAMEКонфигурацияdocker statsCPU и RAMdocker logs NAMEВсе доступные логиdocker logs -f NAMEСледить за логомdocker logs --tail 100 NAMEПоследние 100 строкjournalctl -u dockerDocker daemondocker compose up -dЗапускdocker compose downОстановкаdocker compose psСтатусdocker compose logs -fЛогиdocker compose pullСкачать новые imagesdocker system dfИспользование дискаdocker imagesImagesdocker volume lsVolumesdocker network lsNetworks
КУДА ДЕЛОСЬ
МЕСТО?
Одна из самых частых серверных проблем - внезапно заполненный диск.
Сначала df
Показывает использование смонтированных файловых систем.
Потом du
Позволяет определить, какие каталоги занимают место.
Проверяем journal
Systemd journal тоже может занимать заметное место.
Проверяем Docker
Images, build cache и старые контейнеры способны быстро занять диск.
df и du показывают разные цифры?
Одна из возможных причин - файл уже удалён из каталога, но процесс продолжает держать его открытым.
БАЗОВАЯ
ЗАЩИТА.
Не существует одной команды, которая делает сервер безопасным. Начните с простых и понятных вещей.
Обновления
Регулярно устанавливайте исправления безопасности из доверенных репозиториев.
sudo apt update
SSH-ключи
Для администрирования сервера используйте современные ключи и защищайте приватную часть.
ssh-keygen -t ed25519
Проверяйте порты
Вы должны понимать, какой процесс слушает каждый внешний порт.
sudo ss -lntup
Firewall
Разрешайте только тот входящий трафик, который действительно нужен.
sudo nft list ruleset
Не всё от root
Обычные приложения не должны автоматически получать максимальные привилегии.
id && groups
Лишние сервисы
Проверяйте запущенные сервисы и отключайте ненужные после проверки их назначения.
systemctl --type=service
Ошибки systemd
Упавшие units могут указывать на проблемы конфигурации или обновления.
systemctl --failed
История входов
Проверяйте последние интерактивные входы на сервер.
last -a | head
Права файлов
Не выдавайте write/execute всем пользователям просто для устранения ошибки.
stat FILE
RWX БЕЗ
ЗАГАДОК.
Linux разделяет права владельца, группы и остальных пользователей.
Обычный файл
Владелец может читать и изменять файл. Группа и остальные - только читать.
Исполняемый файл
Владелец может читать, писать и выполнять. Остальные - читать и выполнять.
Владелец
chown изменяет владельца и при необходимости группу.
Посмотреть права
ls и stat помогут увидеть текущий режим, владельца и группу.
Почему не надо сразу chmod 777?
777 выдаёт чтение, запись и выполнение владельцу, группе и всем остальным. Это часто маскирует настоящую проблему с владельцем или группой вместо её исправления.
CPU, RAM
И LOAD.
Высокое число само по себе ещё не диагноз. Нужно понять, какой ресурс ограничивает систему.
CPU 100%
Начните с top и списка процессов по CPU. Определите PID и приложение.
Мало свободной RAM
Смотрите не только free, но и available. Linux активно использует память под cache.
Load Average
Высокий load может быть связан не только с CPU, но и с задачами, ожидающими I/O.
Медленный диск
Если CPU свободен, а система зависает, стоит проверить I/O и состояние накопителя.
Swap
Swap не является заменой RAM, но может дать системе запас при кратковременных пиках.
Быстрый health check
uptime, free, df, systemctl --failed и ps дают быстрый обзор состояния сервера.
LINUX
CHEATSHEET.
Самое нужное в одном месте.
ls -lahСписок файловpwdТекущий каталогcd /pathПерейти в каталогmkdir -p DIRСоздать каталогcp -a SRC DSTКопироватьmv SRC DSTПереместитьrm -i FILEУдалить с подтверждениемcat FILEВывести файлless FILEПросмотрhead -20 FILEПервые строкиtail -20 FILEПоследние строкиtail -f FILEСледить за файломgrep TEXT FILEПоиск текстаip addrIPip routeМаршрутыss -lntupПортыping HOSTPingcurl -I URLHTTP headersgetent hosts DOMAINDNS lookupps auxПроцессыtopМониторингkill PIDЗавершитьuptimeUptime/loadfree -hRAMsystemctl status NAMEСтатусsystemctl restart NAMERestartsystemctl enable NAMEАвтозапускsystemctl --failedОшибкиjournalctl -u NAMEЛогиtar -czf a.tar.gz DIRСоздать tar.gztar -xzf a.tar.gzРаспаковатьzip -r a.zip DIRСоздать ZIPunzip a.zipРаспаковать ZIP
ЧТО-ТО
СЛОМАЛОСЬ?
Открывайте нужный сценарий и проверяйте систему последовательно.
systemctl status NAME --no-pager
journalctl -u NAME -n 100 --no-pager
После этого проверяйте конфигурацию самого приложения. Не переустанавливайте пакет до того, как увидите исходную ошибку.
sudo ss -lntup
sudo ss -lntp | grep ':443'
Затем определите, должен ли существующий сервис использовать этот порт.
df -h
df -i
sudo du -xhd1 /var | sort -h
Если используется Docker, отдельно проверьте docker system df.
ip link
ip addr
ip route
ping -c 3 1.1.1.1
getent hosts example.com
Если IP работает, а имя нет - смотрите DNS. Если нет IP-связности - DNS пока не является основной проблемой.
docker ps -a
docker logs --tail 150 CONTAINER
docker inspect CONTAINER
Частые причины: неверные переменные окружения, отсутствующий файл, недоступная БД или неправильные права.
top
ps aux --sort=-%cpu | head -20
После определения PID выясните, какому сервису или контейнеру он принадлежит.
free -h
ps aux --sort=-%mem | head -20
swapon --show
Смотрите available memory и процессы. Низкое значение free само по себе не всегда означает проблему.
systemctl status ssh
sudo ss -lntp | grep ':22'
Если порт слушается локально, следующим этапом является firewall и внешняя сеть.
id
ls -lah FILE
stat FILE
Определите владельца, группу и пользователя, от имени которого выполняется операция.
systemctl --failed
systemctl is-enabled NAME
journalctl -b -u NAME
Проверьте, включён ли автозапуск и что происходило с сервисом именно в текущую загрузку.
ПОЛЕЗНЫЕ
ПРИЁМЫ.
Мелочи, которые делают работу в терминале намного удобнее.
История команд
Используйте history и поиск Ctrl+R вместо постоянного повторного ввода длинных команд.
Комбинируйте команды
Pipe позволяет передать вывод одной программы другой.
Читайте man
Не помните опцию? man и --help зачастую быстрее поиска случайной статьи.
Проверяйте перед rm
Для важного каталога сначала выполните ls/find и убедитесь, что путь выбран правильно.
Backup конфига
Перед серьёзным изменением конфигурации удобно сохранить исходную копию.
Не угадывайте ошибку
Если сервис упал, сначала прочитайте status и журнал, а уже потом меняйте систему.
ЧАСТЫЕ
ВОПРОСЫ.
База для тех, кто только начинает работать с Linux.
НАШЛИ ОШИБКУ?
ПРЕДЛОЖИТЕ ГАЙД.
Linux постоянно развивается. Если Вы нашли неточность, хотите предложить новый раздел или знаете более удобный способ решения задачи - напишите редакции.
GUIDES guides@linux-guides.online
SECURITY security@linux-guides.online
EDITORIAL editor@linux-guides.online
RESPONSE обычно до 48 часов