Карта статей
- Файловая иерархия — /etc, /proc, /sys, /var, FHS
- systemd — units, services, timers, targets, journald
- Сеть — стек, ip, NetworkManager, nftables
- Пакетные менеджеры — dpkg/apt, rpm/dnf, pacman, Flatpak/Snap
- Ядро — Kconfig, модули, sysctl, initramfs
- Контейнеризация — namespaces, cgroups, Docker, Podman
- Безопасность — DAC, capabilities, SELinux/AppArmor, seccomp, audit
- Файловые системы — ext4, XFS, Btrfs, LVM
- Загрузка и обновление — GRUB2, systemd-boot, live patching, snapshots
- Мониторинг и отладка — journalctl, perf, eBPF, USE Method
- Пользователи, группы, PAM и systemd-logind — UID/GID, shadow, стек PAM, сессии logind
- Время и синхронизация: chrony, timesyncd, RTC — RTC и системные часы, slew против step, chronyc
Отдельно от цикла живёт семейство статей о диагностике производительности: карта инструментов по слоям системы, а под ней — восемь справочников команд к отдельным слоям: CPU и планировщик, память, файловые системы и хранение, сетевой стек, приложения и системные вызовы, фреймворки трассировки, контейнеры и Kubernetes, оборудование.
Информация о системе
uname -a # ядро, архитектура, hostname
cat /etc/os-release # дистрибутив и версия
hostnamectl # hostname, chassis, virtualization
uptime # время работы, load average
lscpu # CPU: модель, ядра, кэши
free -h # память (смотреть available, не free)
lsblk # блочные устройства и разделы
df -hT # смонтированные ФС с типами
ip -br addr # сетевые интерфейсы и IP
cat /proc/cmdline # параметры загрузки ядра
systemd: сервисы и система
# Управление сервисами
systemctl start|stop|restart|reload <unit>
systemctl enable|disable <unit> # автозагрузка
systemctl status <unit> # статус + последние логи
systemctl is-active|is-enabled <unit>
systemctl list-units --failed # сломанные units
systemctl daemon-reload # перечитать unit-файлы после изменений
# Targets (runlevels)
systemctl get-default # текущий target
systemctl isolate rescue.target # переключиться в rescue
systemctl set-default multi-user.target
# Таймеры
systemctl list-timers --all
# Создать: .timer + .service в /etc/systemd/system/
# Ресурсы
systemd-cgls # дерево cgroups
systemd-cgtop # top по cgroups
systemctl show <unit> -p MemoryCurrent # текущее потребление памяти
# Анализ загрузки
systemd-analyze # общее время
systemd-analyze blame # по unit'ам
systemd-analyze critical-chain # critical path
Логи: journalctl + мониторинг
journalctl -b # текущая загрузка
journalctl -b -1 # предыдущая загрузка
journalctl -u <unit> # конкретный сервис
journalctl -p err -b # ошибки текущей загрузки
journalctl -f -u <unit> # follow (tail -f)
journalctl -k # kernel messages (≈ dmesg)
journalctl --since "1 hour ago"
journalctl _COMM=sshd # по имени процесса
journalctl -o json-pretty # JSON со всеми метаданными
journalctl --disk-usage # размер журнала
journalctl --vacuum-size=500M # очистить до 500M
Сеть
# Интерфейсы и адреса
ip addr show # все интерфейсы
ip link set eth0 up|down
ip addr add 192.168.1.10/24 dev eth0
ip route show # таблица маршрутизации
ip route add default via 192.168.1.1
ip neigh show # ARP-таблица
# DNS
resolvectl status # systemd-resolved
dig example.com # DNS-запрос
cat /etc/resolv.conf # (может быть симлинк на resolved)
# Сокеты и соединения
ss -tlnp # listening TCP + процессы
ss -tanp # все TCP соединения
ss -s # сводка по протоколам
ss -ti dst <IP> # TCP info (cwnd, rtt, retrans)
# Диагностика
ping -c 5 <host>
traceroute <host> # или mtr <host>
curl -vvv https://example.com # HTTP с деталями
tcpdump -i eth0 -nn port 443 # захват пакетов
# Firewall (nftables)
nft list ruleset # все правила
nft add rule inet filter input tcp dport 443 accept
# Или через firewalld:
firewall-cmd --list-all
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
# NetworkManager
nmcli device status # устройства
nmcli connection show # соединения
nmcli connection modify <conn> ipv4.addresses 10.0.0.5/24
nmcli connection up <conn>
Пакетные менеджеры
# === Debian/Ubuntu (dpkg + apt) ===
apt update && apt upgrade # обновить пакеты
apt install|remove|purge <pkg>
apt search <query>
apt show <pkg> # информация о пакете
apt list --installed # установленные
apt policy <pkg> # версии и приоритеты
dpkg -L <pkg> # файлы пакета
dpkg -S /path/to/file # какому пакету принадлежит
apt-mark hold|unhold <pkg> # заморозить версию
dpkg --configure -a # починить half-configured
apt --fix-broken install # починить зависимости
# === RHEL/Fedora (rpm + dnf) ===
dnf install|remove|upgrade <pkg>
dnf search <query>
dnf info <pkg>
dnf provides /path/to/file # какой пакет содержит файл
dnf repoquery --requires <pkg> # зависимости
dnf history # история транзакций
dnf history undo <N> # откат транзакции
rpm -qa # все установленные
rpm -ql <pkg> # файлы пакета
rpm -qf /path/to/file # какому пакету принадлежит
# === Arch (pacman) ===
pacman -Syu # sync + upgrade (всегда вместе!)
pacman -S <pkg> # установить
pacman -Rs <pkg> # удалить с зависимостями
pacman -Ss <query> # поиск
pacman -Qi <pkg> # информация
pacman -Ql <pkg> # файлы пакета
pacman -F /path/to/file # какому пакету принадлежит
# === Универсальные форматы ===
flatpak install flathub <app>
flatpak update
flatpak list
snap install <app>
snap list
Ядро и модули
uname -r # версия ядра
cat /boot/config-$(uname -r) | grep CONFIG_EXT4 # опции конфигурации
zcat /proc/config.gz # если CONFIG_IKCONFIG_PROC=y
# Модули
lsmod # загруженные модули
modinfo <module> # метаданные
modprobe <module> # загрузить + зависимости
modprobe -r <module> # выгрузить
modprobe --show-depends <module> # дерево зависимостей
# Blacklist: /etc/modprobe.d/*.conf → blacklist <module>
# Параметры: /etc/modprobe.d/*.conf → options <module> param=value
# sysctl (runtime-параметры ядра)
sysctl -a # все параметры
sysctl <key> # прочитать
sysctl -w <key>=<value> # записать (временно)
# Постоянно: /etc/sysctl.d/99-custom.conf → key = value
sysctl --system # применить все файлы
# Ключевые sysctl
vm.swappiness = 10 # агрессивность swap (серверы)
vm.overcommit_memory = 1 # для Redis (fork+COW)
fs.inotify.max_user_watches = 524288 # для IDE/dev workstations
kernel.panic = 10 # reboot через 10s после panic
net.ipv4.ip_forward = 1 # маршрутизация
# Hardware
lspci -k # PCI-устройства и драйверы
lsusb # USB-устройства
cat /proc/interrupts # прерывания
Контейнеры
# Docker
docker run -d --name web -p 8080:80 --memory=256m --cpus=1.5 nginx:alpine
docker exec -it <container> /bin/sh
docker logs -f <container>
docker stats # ресурсы в реальном времени
docker inspect <container> # полная конфигурация
docker compose up -d # multi-container
docker system prune -a # очистка
# Podman (те же команды, rootless по умолчанию)
podman run -d --name web -p 8080:80 nginx:alpine
# systemd-интеграция — Quadlet (Podman 4.4+): .container в /etc/containers/systemd/
# (rootless — ~/.config/containers/systemd/); podman generate systemd устарел
podman kube generate mypod > pod.yaml # Kubernetes YAML
# Namespaces / cgroups (низкоуровневые)
lsns # список namespaces
nsenter --target <PID> --mount --net --pid /bin/bash # войти в namespace
unshare --fork --pid --mount-proc /bin/bash # создать новый namespace
cat /sys/fs/cgroup/<path>/memory.current # потребление памяти cgroup
Безопасность
# SELinux (RHEL/Fedora)
getenforce # текущий режим
setenforce 0|1 # Permissive|Enforcing (до reboot)
ls -Z /path # контексты файлов
ps -eZ | grep <process> # контексты процессов
ausearch -m avc -ts recent # последние denial'ы
audit2why < /var/log/audit/audit.log # объяснить denial
restorecon -Rv /path # восстановить контексты
semanage fcontext -a -t <type> "/path(/.*)?" # постоянное правило
# AppArmor (Ubuntu/Debian)
aa-status # загруженные профили
aa-enforce|aa-complain /etc/apparmor.d/<profile>
aa-logprof # обновить профиль по логам
# Capabilities
getcap /path/to/binary # capabilities файла
setcap cap_net_bind_service+ep /path # назначить capability
getpcaps <PID> # capabilities процесса
# Audit
ausearch -k <key> # поиск по ключу
aureport --auth # сводка аутентификации
# Правила: /etc/audit/rules.d/*.rules
# Hardening sysctl
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.yama.ptrace_scope = 1
kernel.unprivileged_bpf_disabled = 1
Файловые системы и LVM
# Создание ФС
mkfs.ext4 -L label /dev/sdX1
mkfs.xfs -L label /dev/sdX1
mkfs.btrfs -L label /dev/sdX1
# ext4
tune2fs -l /dev/sdX1 # параметры
tune2fs -m 1 /dev/sdX1 # зарезервировано для root (с 5% до 1%)
e2fsck -f /dev/sdX1 # проверка (unmounted)
resize2fs /dev/sdX1 # ресайз (grow online, shrink offline)
# XFS
xfs_info /mount/point
xfs_growfs /mount/point # grow (online, no shrink!)
xfs_repair /dev/sdX1 # repair (unmounted)
# Btrfs
btrfs subvolume create /mnt/@name # субтом
btrfs subvolume snapshot /mnt/@ /mnt/@-snap # снэпшот
btrfs subvolume snapshot -r /mnt/@ /mnt/@-backup # read-only
btrfs send /mnt/@-backup | btrfs receive /backup/ # инкрементальный бэкап
btrfs filesystem show # устройства
btrfs filesystem usage /mnt/ # точное использование места
btrfs scrub start /mnt/ # проверка целостности (online)
btrfs device stats /mnt/ # ошибки I/O и checksums
chattr +C /var/lib/postgresql/ # отключить CoW для БД
# LVM
pvcreate /dev/sdX1 # Physical Volume
vgcreate vg0 /dev/sdX1 # Volume Group
lvcreate -L 100G -n data vg0 # Logical Volume
lvextend -L +50G /dev/vg0/data # расширить
resize2fs /dev/vg0/data # ext4 grow (или xfs_growfs)
lvcreate -s -L 10G -n snap /dev/vg0/data # snapshot
pvs; vgs; lvs # краткая сводка
Загрузка и обновление
# GRUB
# Конфигурация: /etc/default/grub → GRUB_CMDLINE_LINUX, GRUB_TIMEOUT
update-grub # Debian: перегенерировать grub.cfg
grub2-mkconfig -o /boot/grub2/grub.cfg # RHEL
# UEFI
efibootmgr -v # boot entries
efibootmgr -n 0003 # следующая загрузка (одноразово)
# Управление ядрами
grubby --default-kernel # RHEL: дефолтное ядро
grubby --set-default /boot/vmlinuz-<version>
# GRUB rescue
set root=(hd0,gpt2)
linux /vmlinuz root=/dev/sda2 ro
initrd /initrd.img
boot
# initramfs
update-initramfs -u -k $(uname -r) # Debian
dracut --force # RHEL
mkinitcpio -P # Arch
# Btrfs snapshots rollback
snapper list # список снэпшотов
snapper rollback <N> # откат
Мониторинг и отладка
# === 60-секундная диагностика (Brendan Gregg) ===
uptime # load average
dmesg -T | tail # kernel messages
vmstat 1 5 # CPU/mem/swap/IO
mpstat -P ALL 1 3 # per-CPU
pidstat 1 3 # per-process
iostat -xz 1 3 # disk I/O (await, %util)
free -h # память (available!)
sar -n DEV 1 3 # сетевой throughput
sar -n TCP,ETCP 1 3 # TCP stats
top # интерактивный обзор
# Трассировка
strace -f -e trace=open,read,write -p <PID> # syscalls (overhead!)
strace -c command # summary по syscalls
perf trace -p <PID> # strace через perf (меньший overhead)
# Профилирование
perf record -g -F 99 -p <PID> -- sleep 30 # CPU profiling
perf report # отчёт
perf stat command # hardware counters (IPC, cache misses)
# eBPF (production-safe)
opensnoop-bpfcc # трассировка open()
execsnoop-bpfcc # новые процессы
biolatency-bpfcc # латентность block I/O
tcpconnect-bpfcc # TCP connections
tcpretrans-bpfcc # TCP retransmits
runqlat-bpfcc # scheduler latency
ext4slower-bpfcc 10 # медленные ext4 операции
# bpftrace one-liners
bpftrace -e 'tracepoint:syscalls:sys_enter_openat { printf("%s %s\n", comm, str(args.filename)); }'
bpftrace -e 'profile:hz:99 { @[kstack] = count(); }'
bpftrace -e 'kprobe:vfs_read { @[comm] = count(); }'
# Process debugging
coredumpctl list # core dumps
coredumpctl debug <PID> # открыть в gdb
cat /proc/<PID>/status # статус процесса
cat /proc/<PID>/maps # memory map
ls -la /proc/<PID>/fd/ # открытые файлы
cat /proc/<PID>/stack # kernel stack (root)
USE Method: чеклист по ресурсам
Ресурс Utilization Saturation Errors
─────────────────────────────────────────────────────────────────────────────
CPU mpstat -P ALL (%usr+%sys) vmstat r > CPU count perf stat
Memory free -h (available) vmstat si/so, sar -B dmesg | grep oom
Disk I/O iostat -xz (%util) iostat aqu-sz smartctl, dmesg
Network sar -n DEV (vs link) ss -ti retrans, nstat ip -s link (errors)
FreeBSD эквиваленты (сводка)
Linux FreeBSD
─────────────────────────────────────────
systemctl service / sysrc
journalctl /var/log/messages
apt / dnf / pacman pkg
ip addr / ip route ifconfig / route
nftables PF (pf.conf)
modprobe / lsmod kldload / kldstat
docker / podman jail / bastille
SELinux / AppArmor MAC framework / securelevel
strace truss
perf / eBPF DTrace
ext4 / Btrfs UFS2 / ZFS
LVM GEOM + ZFS zpools
GRUB2 loader (/boot/loader.conf)
update-grub freebsd-update
snapper (Btrfs) bectl (ZFS boot environments)
cgroups RCTL
/proc/PID/* procstat
top / htop top / systat
Связанные заметки
- Linux — средства диагностики производительности — карта диагностических инструментов и справочники команд
- Linux — план цикла статей — структура и стиль статей цикла
- FreeBSD — сводный cheatsheet — аналогичная шпаргалка по FreeBSD
Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.
Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.