🐧 Все для Linux
Материалы по дистрибутивам, оконным окружениям и командной строке. Основные команды даны для ALT Linux (apt-rpm + systemd), отдельный блок — про Arch-based системы (CachyOS, EndeavourOS), фишки терминала универсальны для любого bash.
Основные команды
В ALT пакетный менеджер — apt-get (как в Debian), но пакетная база RPM:
диспетчер dpkg здесь не работает, вместо него — rpm.
Команды изменения системы выполняйте от root или через sudo.
* Все блоки оформлены спойлерами — раскрываются кликом по заголовку. Блоки можно копировать целиком: всё после # — комментарии, bash их просто пропустит.
📦 Пакеты (ALT: apt-get + rpm)
apt-get update # обновить списки пакетов из репозиториев
apt-get upgrade # обновить все установленные пакеты
apt-get dist-upgrade # то же с разрешением конфликтов зависимостей
apt-get install <пакет> # установить пакет (несколько через пробел)
apt-get remove <пакет> # удалить пакет
apt-get purge <пакет> # удалить вместе с его конфигами
apt-get autoremove # подчистить ставшие ненужными зависимости
apt-get clean # очистить кэш скачанных .rpm
apt-cache search <слово> # поиск пакета по имени и описанию
apt-cache policy <пакет> # доступные версии и репозиторий
apt-cache show <пакет> # описание, размеры, зависимости
apt-get check # целостность списков пакетов и зависимостей
apt-mark showmanual # пакеты, установленные вручную (не как зависимость)
apt-mark hold <пакет> # заморозить версию (не обновлять)
rpm -qa # все установленные пакеты
rpm -qa | grep <слово> # найти среди установленных
rpm -qi <пакет> # информация о пакете
rpm -ql <пакет> # файлы, входящие в пакет
rpm -qf /путь/к/файлу # какому пакету принадлежит файл
rpm -q --whatprovides '*имя*' # какой пакет предоставляет такой файл
rpm -i file.rpm # установить пакет из локального файла
rpm -Uvh file.rpm # обновить пакет из локального файла
rpm -e <пакет> # удалить пакет (эквивалент remove)
rpm -V <пакет> # проверить целостность файлов пакета
🐧 Arch Linux и производные (pacman, yay)
pacman -Syu # обновить систему целиком (всегда так, не -Sy!)
pacman -S имя # установить пакет
pacman -Rs имя # удалить пакет вместе с зависимостями
pacman -Ss слово # поиск по репозиториям
pacman -Qi имя # информация об установленном пакете
pacman -Ql имя # файлы пакета
pacman -Qo /путь # какому пакету принадлежит файл
pacman -Qe # явно установленные (не как зависимости)
pacman -Fy # обновить базу «какая команда из какого пакета»
pacman -F имя # какой пакет даёт такую команду
pacman -Sc # подчистить старые версии из кэша
pacman -Scc # очистить весь кэш скачанных пакетов
yay -S имя # установить из AUR (CachyOS/EndeavourOS: yay/paru)
mkinitcpio -P # пересобрать initramfs после правок конфигов
grub-mkconfig -o /boot/grub/grub.cfg # обновить меню GRUB
⚙️ Службы и журнал (systemd)
systemctl status <служба> # текущее состояние
systemctl start <служба> # запустить
systemctl stop <служба> # остановить
systemctl restart <служба> # перезапустить
systemctl reload <служба> # перечитать конфиги без остановки
systemctl enable --now <служба> # в автозагрузку и сразу запустить
systemctl disable <служба> # убрать из автозагрузки
systemctl mask <служба> # запретить запуск вплоть до unmask
systemctl is-active <служба> # работает ли прямо сейчас (exit-код 0/1)
systemctl list-units --failed # службы с проблемами
systemctl list-unit-files --state=enabled # что включено в автозагрузку
systemctl cat <служба> # показать её unit-файл (и все override'ы)
systemctl edit <служба> # локальная правка unit-файла без боязни обновлений
systemctl daemon-reload # перечитать конфиги после правок
systemd-analyze # сколько грузилась система
systemd-analyze blame # по каким службам дольше всего грузились
journalctl -u <служба> -f # лог службы в реальном времени
journalctl -u <служба> --since "1 hour ago" # лог за последний час
journalctl -b # журнал текущей загрузки
journalctl -b -p err # только ошибки текущей загрузки
journalctl -k # сообщения ядра (аналог dmesg)
journalctl --disk-usage # размер журнала
journalctl --vacuum-size=200M # поджать журнал до 200 МБ
journalctl -xe # последние важные события
🔄 Система и обновления
update-kernel # обновить ядро (утилита ALT)
update-kernel -l # список доступных ядер
uname -a # версия ядра, архитектура, дата сборки
cat /etc/os-release # версия дистрибутива
hostnamectl # имя компьютера и версия ОС
hostnamectl set-hostname имя # задать имя компьютера
timedatectl # дата, время, часовой пояс
timedatectl set-timezone Europe/Moscow # сменить часовой пояс
uptime # аптайм и средняя нагрузка
free -h # оперативная память
df -h # занятое место на дисках
df -i # занятые inode (часто упираются раньше места)
du -sh папка/* # размер содержимого папки
lsblk # диски и разделы
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT # то же, нужными колонками
lscpu # информация о процессоре
lspci # PCI-устройства (видеокарта, сетевая...)
lsusb # USB-устройства
lsmod # загруженные модули ядра
dmesg | tail # последние сообщения ядра
dmesg --level=err,warn # только ошибки и предупреждения
last -n 20 # кто и когда входил в систему
reboot # перезагрузка
poweroff # выключение (то же, что shutdown -h now)
🌐 Сеть
ip a # все IP-адреса
ip r # таблица маршрутов
ip link set enp3s0 up # поднять интерфейс (down — опустить)
hostname -I # локальные IP этого компьютера
nmcli device status # состояние сетей (NetworkManager)
nmcli device wifi list # доступные Wi-Fi сети
nmcli device wifi connect "SSID" password "пароль" # подключиться к Wi-Fi
ping -c 4 <адрес> # проверить доступность
mtr site.ru # пинг + маршрут по hop'ам
traceroute site.ru # маршрут пакета до хоста
ss -tlnp # открытые TCP-порты и процессы
ss -ulnp # открытые UDP-порты
dig site.ru # DNS-запрос (аналоги: nslookup, host)
nc -zv хост 80 # открыт ли порт на хосте
curl -I https://site.ru # заголовки ответа сервера
curl -s https://api.site # скачать в stdout
wget -c файл # скачать с продолжением
tcpdump -i any -n port 80 # снимать трафик порта (Ctrl+C — стоп)
firewall-cmd --list-all # правила брандмауэра firewalld
ssh user@host # удалённый доступ к серверу
ssh-copy-id user@host # ключ для входа без пароля
scp файл user@host:/путь/ # скопировать файл на сервер
rsync -avz папка/ user@host:/dst/ # надёжная синхронизация с сервером
🗂 Файлы, права и архивы
ls -la # все файлы: права, размер, даты
cat файл # показать содержимое
less файл # просмотр с прокруткой (q — выйти)
tail -f журнал.log # следить за дописыванием в файл
head -n 20 файл # первые 20 строк
wc -l файл # количество строк в файле
stat файл # точный размер, даты, права, inode
touch файл # создать пустой файл / обновить дату
cp -r исход папка/ # копировать папку целиком
cp -a исход папка/ # копия с сохранением прав и дат
mv файл папка/ # переместить или переименовать
rm -i файл # удалить с подтверждением
rm -r папка/ # удалить папку с содержимым (осторожно!)
mkdir -p a/b/c # создать вложенные папки
chmod +x скрипт # сделать файл исполняемым
chmod 755 папка # права: владелец rwx, остальные rx
chmod 644 файл # права на конфиг: владелец rw, остальные r
chown user:group файл # сменить владельца
chown -R user:group папка/ # рекурсивно по всей папке
ln -s цель ссылка # символьная ссылка
tar czf архив.tar.gz папка # создать архив .tar.gz
tar xzf архив.tar.gz # распаковать архив
tar tf архив.tar.gz # посмотреть, что внутри архива
unzip архив.zip -d папка/ # распаковать zip
md5sum файл # контрольная сумма (проверка скачанного)
sha256sum файл # контрольная сумма SHA-256
find . -name "*.log" # найти файлы по маске
find . -type f -size +100M # файлы больше 100 МБ
grep -r "слово" . # искать текст внутри файлов
locate имя # быстрый поиск по индексу (plocate)
which команда # путь до исполняемого файла
rsync -av папка/ host:/dst/ # синхронизация с сервером
👥 Пользователи и права
whoami # текущий пользователь
id # мои группы и права
id имя # группы другого пользователя
useradd имя # создать пользователя
useradd -m -G wheel,storage имя # с домашней папкой и группами
passwd имя # задать или сменить пароль
usermod -aG группа имя # добавить в группу (например input, wheel)
userdel -r имя # удалить пользователя вместе с домашней папкой
groups имя # список групп пользователя
visudo # безопасный редактор sudoers (не ломает синтаксис)
sudo -i # полноценный shell от root
su - имя # войти под другого пользователя
umask 022 # маска прав на новые файлы (rwxr-xr-x)
💡 Фишки терминала (bash)
⌨️ Горячие клавиши
Tab # автодополнение (двойной Tab — показать всё)
Ctrl+R # поиск по истории: печатайте часть команды
Ctrl+L # очистить экран (то же, что clear)
Ctrl+C # прервать текущую команду
Ctrl+Z # приостановить: продолжить — fg, фон — bg
Ctrl+A / Ctrl+E # курсор в начало / в конец строки
Ctrl+U / Ctrl+K # вырезать строку до курсора / после
Ctrl+W # удалить предыдущее слово
Alt+B / Alt+F # прыжок курсором назад / вперёд по слову
Alt+Backspace # удалить предыдущее слово (работает и в полях ввода)
Ctrl+Y # вставить то, что вырезали Ctrl+U / Ctrl+K
Ctrl+D # выход из шелла (когда строка пуста) / удалить символ
Ctrl+X Ctrl+E # открыть текущую набранную команду в редакторе
Esc . # вставить последний аргумент прошлой команды
🔁 История и повторы
!! # повторить последнюю команду
sudo !! # ...и запустить её от root
!$ # последний аргумент прошлой команды
!42 # запустить команду №42 из истории
!grep # повторить последнюю команду, начинавшуюся с grep
history 20 # последние 20 команд
history | grep apt # поиск по истории
fc # открыть последнюю команду в редакторе и поправить
history -c # очистить историю
history -d 15 # удалить из истории команду №15 (например, с паролем)
# в ~/.bashrc, чтобы история была удобной:
# HISTCONTROL=ignoreboth # не писать дубли и строки с пробела в начале
# HISTSIZE=10000 # хранить 10 000 команд
🔗 Конвейеры и перенаправление
ls -lh | grep .iso # отфильтровать вывод
journalctl -p err | tail -20 # последние ошибки системы
ps aux --sort=-%mem | head # процессы, жрущие память
sort file | uniq -c | sort -rn # частота строк: от большего
command > file # записать вывод в файл (перезапись)
command >> file # дописать в конец файла
command 2>/dev/null # спрятать ошибки
command 2>&1 | tee log # вывод и в файл, и на экран
find . -name "*.tmp" -delete # удалить найденное прямо в find
find . -name "*.tmp" | xargs rm # то же через xargs
grep -v "шум" файл # показать строки БЕЗ совпадения
diff файл1 файл2 # различия между двумя файлами
tail -n +2 файл # файл без первой строки
wc -l файл | awk '{print $1" строк"}' # пример связки команд
🧰 Обработка текста (grep, sed, awk, cut)
grep "шум" файл # строки с совпадением
grep -i "шум" файл # без учёта регистра
grep -rn "шум" . # рекурсивно по папке, с номерами строк
grep -c "шум" файл # сколько раз встретилось
cut -d: -f1 файл # первое поле каждой строки (разделитель «:»)
awk '{print $1, $3}' файл # первое и третье «слово» из каждой строки
sed 's/старое/новое/g' файл # заменить текст (вывод на экран)
sed -i 's/старое/новое/g' файл # заменить прямо в файле
sed -n '10,20p' файл # показать строки с 10-й по 20-ю
sort файл # отсортировать строки
sort -n файл # числовая сортировка
sort -k3 -t, файл # сортировка по 3-му полю (разделитель «,»)
sort -u файл # сортировка + удалить дубли
uniq -c # убрать соседние дубли, посчитав повторы
tr -d '\r' # удалить символы (например, \r из файлов DOS)
column -t -s, файл # красивая таблица из разделённых данных
tee файл # и на экран, и в файл одновременно
xargs -n1 команда # подставить найденное по одной штуке
⚙️ Процессы и приоритеты
ps aux | grep имя # найти процесс по имени
ps aux --sort=-%cpu | head # кто жрёт процессор
top # мониторинг (q — выйти, M — сортировать по памяти)
htop # удобный top (если установлен)
free -h; watch -n 2 free -h # следить за памятью каждые 2 секунды
kill PID # мягкое завершение (TERM)
kill -9 PID # принудительное, если процесс не поддаётся
killall имя # убить все процессы по имени
pkill -f "часть команды" # убить по совпадению в командной строке
fuser -k /путь/к/файлу # завершить процесс, занявший файл или порт
lsof -i :8080 # кто держит порт 8080
bg / fg # вернуть фоновую задачу на передний план (после Ctrl+Z)
jobs # список своих фоновых задач
nice -n 10 команда # запустить с пониженным приоритетом
ionice -c3 команда # приоритет ввода-вывода (idle — не мешать системе)
🚀 Удобства bash
watch -n 1 df -h # обновлять вывод каждую секунду
apt-get update && apt-get upgrade # вторая команда только при успехе первой
ping -c 4 site.ru || echo "нет сети" # если пинг не удался — сообщить
cd - # вернуться в предыдущую папку
alias ll='ls -alh' # короткое имя команды (добавить в ~/.bashrc)
nohup команда & # выполнить в фоне и не бояться закрыть терминал
man команда # справка по команде (q — выйти)
команда --help # краткая справка прямо в терминале
type команда # что это: алиас, внутренняя или внешняя команда
command -v команда # путь до исполняемого файла (работает и в скриптах)
time команда # сколько выполнялась команда
pwd -P # реальный путь без «мостов» через симлинки
pushd папка # уйти в папку, запомнив предыдущую
popd # вернуться туда, откуда ушли
file файл # определить тип файла (не по расширению)
seq 1 100 # вывести числа от 1 до 100
date +%F # дата в формате 2026-10-23
touch отчёт{1..5}.txt # фигурные скобки: 5 файлов одной командой
tree -L 2 # дерево папок на 2 уровня (пакет tree)
💽 Файловые системы: проверка и восстановление
Ext4 — классика с журналом (Astra, ALT, Ubuntu), лечится утилитами
e2fsck/debugfs. Btrfs — снапшоты, самовосстановление
из дублей, RAID (openSUSE, Fedora, Rocky). Всё под спойлерами — открывайте нужный блок.
* fsck и btrfs check нельзя запускать на примонтированной read-write ФС:
либо umount, либо загрузитесь с LiveUSB. Перед «лечением» критичного диска —
снимите образ (ddrescue).
🟩 Ext4 — проверка и настройка
blkid # какие ФС на каких разделах (UUID, тип)
lsblk -f # таблица разделов с файловыми системами
tune2fs -l /dev/sdXn # суперблок: размер, ошибки, дата последнего fsck
dumpe2fs -h /dev/sdXn # сводка по суперблоку
e2fsck -n /dev/sdXn # только проверить, НИЧЕГО не менять
e2fsck -f /dev/sdXn # полная проверка (принудительно)
e2fsck -fy /dev/sdXn # проверка + починить все ошибки без вопросов
e2fsck -p /dev/sdXn # чинить только безопасное (так работает fsck при загрузке)
e2fsck -fy /dev/sdXn1 /dev/sdXn2 # проверить несколько разделов разом
tune2fs -m 1 /dev/sdXn # резерв под root: 1% вместо 5% (больше места)
tune2fs -c 0 /dev/sdXn # отключить fsck по счётчику монтирований
e4defrag /папка # дефрагментировать файлы (актуально для HDD)
fstrim -v / # поддержать TRIM на SSD (или discard в fstab)
dmesg | grep -iE 'error|i/o' # ошибки диска в журнале ядра
journalctl -b -p err # ошибки прошлой загрузки
🟩 Ext4 — восстановление
badblocks -sv /dev/sdXn # найти битые секторы (долго; флаг -w НЕЛЬЗЯ на рабочей ФС)
e2fsck -c /dev/sdXn # fsck с проверкой битых секторов (через badblocks)
# --- повреждён суперблок ---
mke2fs -n /dev/sdXn # ПОКАЗАТЬ номера резервных суперблоков (ничего не пишет!)
e2fsck -b 32768 /dev/sdXn # fsck с резервным суперблоком (номер — из вывода mke2fs -n)
tune2fs -L имя /dev/sdXn # задать метку тома заново
tune2fs -U random /dev/sdXn # сгенерировать новый UUID (если UUID сломан/задвоен)
tune2fs -O ^has_journal /dev/sdXn # отключить повреждённый журнал (крайний случай)
tune2fs -O has_journal /dev/sdXn # вернуть журнал обратно после лечения
resize2fs /dev/sdXn # подогнать ФС под размер раздела (увеличение — онлайн)
resize2fs /dev/sdXn 50G # уменьшить ФС до 50G (сначала раздел, потом ФС, только с umount)
# --- удалённые файлы: редактор файловой системы ---
debugfs /dev/sdXn # интерактивный режим (по умолчанию только чтение)
debugfs -w /dev/sdXn # режим записи (нужен для undelete)
# внутри debugfs:
# lsdel — список удалённых inode (хорошо работает на старых ФС)
# undelete файл — восстановить удалённый файл (путь внутри ФС)
# dump файл /выход — вытащить содержимое наружу
# stat файл — inode, размер, блоки файла
# ls /папка — содержимое папки
🔵 Btrfs — проверка состояния
mount | grep btrfs # какие опции монтирования применены
btrfs filesystem show # все видимые btrfs-тома и их UUID
btrfs filesystem usage /mnt # распределение места: данные, метаданные, дубли
btrfs filesystem df /mnt # занято/свободно по типам блоков
btrfs device usage /mnt # распределение по дискам, RAID-уровень
btrfs device stats /mnt # счётчики I/O-ошибок и повреждений устройств
btrfs device stats -z /mnt # обнулить счётчики после лечения
btrfs subvolume list /mnt # все сабволюмы и их ID
btrfs subvolume show /mnt # информация о текущем сабволюме
btrfs property get /mnt # свойства ФС и сабволюмов (сжатие, noatime)
btrfs quota show /mnt # квоты qgroup (работают после btrfs quota enable)
btrfs balance status /mnt # не висит ли незавершённая балансировка
btrfs scrub start /mnt # онлайн-проверка целостности с исправлением из дублей
btrfs scrub status /mnt # результат последнего scrub
fstrim -v / # поддержать TRIM на SSD
btrfs check /dev/sdXn # офлайн-проверка (ТОЛЬКО на отмонтированной ФС!)
btrfs check --repair /dev/sdXn # чинить — только по совету разработчиков btrfs,
# есть шанс усугубить; без бэкапа не запускать
🔵 Btrfs — восстановление после сбоя
btrfs rescue super-recover -v /dev/sdXn # восстановить суперблоки из резервных копий
btrfs rescue zero-log /dev/sdXn # обнулить журнал: ошибка «has generation ...»
btrfs find-root /dev/sdXn # найти последний валидный корень дерева
btrfs rescue chunk-recover /dev/sdXn # восстановить chunk-карту (работает часами)
btrfs inspect-internal dump-super /dev/sdXn # дамп суперблока для разбора
btrfs inspect-internal dump-tree /dev/sdXn # дамп дерева метаданных
btrfs restore -v /dev/sdXn /другой_диск # вытащить ФАЙЛЫ с повреждённой ФС наружу
btrfs-image /dev/sdXn dump.img # дамп метаданных (отдать разработчикам btrfs)
# --- деградированный RAID1: подняться с оставшегося диска ---
mount -o degraded /dev/sdXn /mnt
# --- замена умершего диска ---
btrfs device add /dev/sdNEW /mnt # добавить новый диск взамен
btrfs device delete /dev/sdOLD /mnt # вывести старый (если ещё виден)
btrfs replace start -B /dev/sdOLD /dev/sdNEW /mnt # заменить «на лету»
btrfs replace status /mnt # прогресс замены
# --- ENOSPC при свободном месте: фрагментация свободного пространства ---
btrfs balance start -musage=50 -dusage=50 /mnt # перераспределить почти пустые chunk'и
btrfs balance status /mnt # прогресс балансировки
btrfs balance cancel /mnt # прервать балансировку
🔵 Btrfs — снапшоты, откат системы и бэкапы
btrfs subvolume list /mnt # все сабволюмы и их ID
btrfs subvolume show /mnt # инфа о сабволюме: родитель, снапшоты, ID
btrfs subvolume get-default /mnt # какой сабволюм сейчас корень по умолчанию
btrfs subvolume snapshot /mnt/@ /mnt/@snap-$(date +%F) # снапшот корня с сегодняшней датой
btrfs subvolume snapshot -r /mnt/@ /mnt/@ro-bak # read-only снапшот
btrfs subvolume delete /mnt/@snap-2026-10-23 # удалить снапшот
btrfs subvolume set-default 257 /mnt # корень при загрузке = сабволюм с ID 257
# --- бэкапы через send/receive (работают и на смонтированный диск, и на файл) ---
btrfs send /mnt/@snap | btrfs receive /mnt/backup/ # полный снапшот в файловую ФС
btrfs send -p /mnt/@old /mnt/@new | btrfs receive /mnt/backup/ # инкремент от старого
# --- откат после неудачного обновления (загрузились с LiveUSB или резвого снапшота) ---
mount -o subvol=@ /dev/sdXn /mnt # смонтировать корень-сабволюм
btrfs subvolume list -p /mnt # найти ID сломанного корня и его родителя
btrfs subvolume delete /mnt/@ # удалить сломанный корень (занят — сначала umount)
btrfs subvolume snapshot /mnt/@snap-2026-10-01 /mnt/@ # восстановить корень из снапшота
btrfs subvolume set-default 257 /mnt # и убедиться, что корень — тот, что нужно
# --- утилиты поверх btrfs (openSUSE, Fedora): ---
# snapper list — история снапшотов
# snapper create -d "описание" — создать снапшот вручную
# snapper rollback — откат всей системы на снапшот
🌍 Общее: спасение системы через chroot с LiveUSB
# === Спасение системы с LiveUSB (работает для любой ФС) ===
fdisk -l # найти корневой раздел (например sda2) и /boot (sda1)
mount /dev/sda2 /mnt # примонтировать корень (для Btrfs: mount -o subvol=@ ...)
mount /dev/sda1 /mnt/boot # если /boot отдельный раздел
mount /dev/sda3 /mnt/boot/efi # для UEFI: ESP обычно vfat (смотрите lsblk -f)
mount --bind /dev /mnt/dev # подключить служебные ФС для chroot:
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
mount --bind /run /mnt/run
chroot /mnt # теперь вы «внутри» сломанной системы
# --- внутри chroot ---
grub-install /dev/sda # переустановить загрузчик (указать диск БЕЗ номера раздела)
grub2-mkconfig -o /boot/grub2/grub.cfg # пересобрать меню (иные дистрибутивы — update-grub)
mkinitrd # пересобрать initrd (в ALT так; Arch — mkinitcpio, Fedora — dracut)
findmnt --verify # проверить /etc/fstab перед перезагрузкой
# --- если подозреваете сломанный fstab: ---
# отредактировать: nano /etc/fstab
# или смонтировать вручную и продолжить работу без fstab
exit
umount -R /mnt
reboot
# --- ядро не грузится из-за спорного fsck: пропустить проверку в параметрах GRUB (клавиша e) ---
# fsck.mode=skip