Справочник: Типичные ошибки Linux

Каталог частых ошибок, которые выдаёт система, и что с ними делать. Организован по подсистемам.

Структура сообщения об ошибке

программа: описание_проблемы: системная_ошибка

Пример: cp: cannot create regular file '/root/file': Permission denied — программа cp, действие cannot create regular file, причина Permission denied.

Warning vs Error. Warning — предупреждение, программа продолжает работу. Error — ошибка, операция не выполнена. Код возврата: 0 = успех, > 0 = ошибка. Проверка: echo $? после команды.

Файловая система

ОшибкаПричинаРешение
Permission deniedНет прав (rwx) на файл/каталогls -la filechmod/chown или sudo
No such file or directoryФайл не существует или ошибка в путиПроверить путь, ls родительского каталога
Not a directoryПуть содержит файл вместо каталогаls -la каждого компонента пути
Is a directoryПопытка записать в каталог как в файлУказать имя файла внутри каталога
File existsФайл уже существует (например mkdir)Использовать -p для mkdir, проверить имя
No space left on deviceДиск заполненdf -h → найти и очистить. Если место есть — кончились inode: df -i
Read-only file systemFS смонтирована read-onlymount -o remount,rw / (если можно)
Too many open filesПроцесс исчерпал лимит FDulimit -n → увеличить в /etc/security/limits.conf
Device or resource busyФайл/FS используетсяlsof +D /path или fuser /path → найти процесс
Structure needs cleaningФС поврежденаsudo fsck /dev/sdXN (раздел должен быть размонтирован)

Права доступа

ОшибкаПричинаРешение
Operation not permittedНужны привилегии root (или capability)sudo или проверить права/владельца
Permission denied при execНет бита executechmod +x script.sh
sudo: user is not in the sudoers fileПользователь не в группе sudousermod -aG sudo user (от root)
Authentication failure (sudo)Неверный парольВвести пароль текущего пользователя, не root

Процессы и память

Ошибка / СимптомПричинаРешение
Killed (OOM)Out of Memory Killer убил процессДобавить RAM/swap, проверить утечки: dmesg | grep -i oom
Segmentation faultПрограмма обратилась к чужой памятиБаг в программе. Обновить или сообщить разработчикам
Cannot allocate memoryRAM + swap исчерпаныfree -h → добавить swap или найти утечку
fork: retry: Resource temporarily unavailableЛимит процессовulimit -u → увеличить nproc, проверить fork bomb
Zombie-процессы (Z в ps)Parent не вызвал waitpid()Не критично (не занимают ресурсы). Убить parent для очистки
High load, but CPU idleМного D-state процессовПроблема с диском/NFS: iostat, iotop

Сеть

ОшибкаПричинаРешение
Connection refusedПорт закрыт или сервис не запущенss -tlnp | grep PORT → запустить сервис
Connection timed outПакеты теряются (firewall, маршрут)Проверить firewall: iptables -L, маршрут: ip route get IP
No route to hostНет маршрута до хостаip route → проверить gateway
Network is unreachableНет default routeip route add default via GATEWAY
Name or service not knownDNS не может разрешить имяping 8.8.8.8 (если работает — проблема DNS). cat /etc/resolv.conf
bind: Address already in useПорт занят другим процессомss -tlnp | grep PORT → остановить или сменить порт
Host key verification failedSSH-ключ хоста изменилсяУдалить строку из ~/.ssh/known_hosts (если смена ключа ожидаема)

Пакетные менеджеры

ОшибкаПричинаРешение
Unable to locate packageПакет не найденsudo apt update → повторить, проверить имя
dpkg was interruptedПрерванная установкаsudo dpkg --configure -a
Unmet dependenciesКонфликт зависимостейsudo apt --fix-broken install
Could not get lock /var/lib/dpkg/lockapt уже запущенПодождать. Если зависло: sudo kill PID соответствующего процесса
GPG error: NO_PUBKEYНет ключа репозиторияИмпортировать ключ по инструкции репозитория

systemd / Сервисы

Ошибка / СимптомПричинаРешение
Unit not foundЮнит не существуетПроверить имя: systemctl list-unit-files | grep name
Failed to startexit-codeОшибка в программеjournalctl -u service -n 50 → смотреть причину
status=203/EXECНет файла или нет правПроверить ExecStart путь и chmod +x
status=217/USERПользователь в User= не существуетid username → создать пользователя
Сервис enabled, не запускаетсяenablestartsystemctl enable --now service
Изменения в unit-файле не применилисьНужен daemon-reloadsudo systemctl daemon-reload

Загрузка

СимптомПричинаРешение
grub rescue>GRUB не находит конфигРучная загрузка из GRUB CLI, затем update-grub
Kernel panicЯдро не может смонтировать rootПроверить root= в параметрах ядра, пересобрать initramfs
Emergency modeОшибка в fstabИсправить /etc/fstab, mount -a для проверки

Диагностика: куда смотреть

# 1. Последние ошибки в журнале
journalctl -p err -b               # ошибки с текущей загрузки
 
# 2. Логи конкретного сервиса
journalctl -u nginx -n 50
 
# 3. Ядро
dmesg | tail -30
journalctl -k
 
# 4. Код возврата последней команды
echo $?                            # 0 = OK, >0 = ошибка
 
# 5. Отладка
strace -o trace.log command        # системные вызовы

Связанные материалы