Решение основных проблем в Linux

1. Введение: Типовые сценарии неисправностей в Linux и подход к диагностике
Linux-системы известны стабильностью, но типовые неполадки возникают после обновлений, при конфигурировании оборудования или из-за ошибок в скриптах. Чаще всего пользователи сталкиваются с отказом загрузки (черный экран, ошибка Grub), сломанным менеджером пакетов, отсутствием сети или зависаниями рабочего стола. Наш подход — использовать встроенные утилиты без установки стороннего софта: systemctl, dmesg, journalctl, strace, lsof.
Для любой диагностики первым шагом является проверка системного журнала. Команда journalctl -xe (на системах с systemd) покажет последние ошибки и предупреждения перед сбоем. Если система не загружается, потребуется LiveUSB-дистрибутив для монтирования корневого раздела и правки конфигов вручную. Далее приводим готовые сценарии с точными командами для версий Ubuntu/Debian и RHEL/Fedora (2026 года).
2. Ошибки загрузчика Grub и черный экран при старте
Сценарий: после обновления ядра или изменения разметки диска система останавливается на приглашении grub rescue>. Причина — повреждение вторичного загрузчика или неверный UUID корневого раздела. Решение — восстановление через LiveUSB по шагам.
- Шаг 1. Загрузитесь с LiveUSB, откройте терминал и выполните
sudo fdisk -l, чтобы определить имя вашего корневого раздела (например, /dev/sda2). - Шаг 2. Смонтируйте корневой раздел:
sudo mount /dev/sda2 /mnt. Для EFI-систем смонтируйте также ESP-раздел (обычно /dev/sda1):sudo mount /dev/sda1 /mnt/boot/efi. - Шаг 3. Выполните chroot:
sudo mount --bind /dev /mnt/dev && sudo mount --bind /proc /mnt/proc && sudo mount --bind /sys /mnt/sys && sudo chroot /mnt. - Шаг 4. Переустановите Grub:
grub-install /dev/sda(для BIOS) илиgrub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Ubuntu(для UEFI). - Шаг 5. Обновите конфигурацию:
update-grub(Debian/Ubuntu) илиgrub2-mkconfig -o /boot/grub2/grub.cfg(RHEL). - Шаг 6. Выйдите из chroot (
exit), отмонтируйте разделы и перезагрузитесь. - Шаг 7. Если ошибка сохраняется, проверьте файл /etc/default/grub — часто проблема в параметре
GRUB_CMDLINE_LINUX_DEFAULT: добавьтеnomodesetдля отключения драйвера видео.
3. Восстановление сломанного менеджера пакетов (APT, DNF, Zypper)
Повреждение списка пакетов или нарушение зависимостей блокирует установку/удаление софта. Симптом: команда apt-get install завершается ошибкой dpkg: error processing package или unmet dependencies. Необходима ручная зачистка и переконфигурация.
Для Debian/Ubuntu (APT): сначала остановите процессы dpkg: sudo fuser -vki /var/lib/dpkg/lock. Затем выполните sudo dpkg --configure -a — это переконфигурирует все распакованные, но не настроенные пакеты. Если ошибка конкретного пакета (например, libc6), скачайте его .deb вручную с запасного сервера и установите через sudo dpkg -i --force-depends пакет.deb.
- Очистка кэша:
sudo apt-get clean && sudo apt-get autoclean— удаляет битые скачанные файлы из /var/cache/apt/archives. - Обновление списка репозиториев:
sudo apt-get update --allow-insecure-repositories(если репозиторий не имеет GPG-ключа, добавьте ключ черезsudo apt-key adv). - Фикс зависимостей:
sudo apt-get -f install— исправляет сломанные зависимости. - Полная переустановка пакета:
sudo apt-get install --reinstall имя_пакета. - Для RHEL/Fedora (DNF):
sudo dnf clean all && sudo dnf distro-sync— синхронизирует установленные пакеты с репозиторием, удаляя лишние. - Откат транзакции:
sudo dnf history listиsudo dnf history undo ID.
4. Отсутствие сети: настройка Ethernet, Wi-Fi и диагностика DNS
Проблема: ping до шлюза не проходит, хотя интерфейс поднят. Причина — неправильный маршрут или блокировка firewall. Для быстрой проверки используйте ip a (показывает IP-адреса), ip route show default (проверка шлюза) и ping 8.8.8.8 (проверка промежуточных узлов). Если ping до внешнего IP идёт, а по доменному имени — нет, проблема в DNS.
Действия по шагам:
- Проверьте
/etc/resolv.conf: в 2026 году большинство систем используют systemd-resolved. Выполнитеresolvectl statusилиcat /etc/resolv.conf. Правильные строки:nameserver 8.8.8.8илиnameserver 1.1.1.1. - Перезапустите сетевой менеджер:
sudo systemctl restart NetworkManager(илиsystemd-networkd). - Для статического IP на Ethernet (Ubuntu 24.04+/2026): отредактируйте файл
/etc/netplan/01-netcfg.yamlс параметрами:dhcp4: no, укажите адреса, шлюз и DNS. Примените:sudo netplan apply. - Если Wi-Fi не видит сети: проверьте включён ли адаптер —
rfkill list. Если заблокирован, снимите блокировку:sudo rfkill unblock wifi. - Firewall:
sudo ufw status(Ubuntu) илиsudo firewall-cmd --list-all(RHEL). Временно отключите для теста:sudo ufw disable. - Сбросьте настройки TCP:
sudo sysctl -w net.ipv4.tcp_mtu_probing=1— решает проблему фрагментации пакетов на некоторых VPN.
5. Высокая нагрузка на CPU и утечка памяти: выявление процесса-виновника
Зависание интерфейса, постоянный 100% CPU или постепенное заполнение ОЗУ — типичные проблемы серверов и рабочих станций. Для точного определения используйте top (сортировка по CPU: P, по памяти: M). Современная замена — htop (sudo apt install htop) с цветовой индикацией. Для анализа утечки памяти запустите watch -n 1 'ps aux --sort=-%mem | head -15' в фоне и отследите прирост за 5-10 минут.
- Выявление дескрипторов:
lsof -p PID | wc -l— если больше 10 000, процесс теряет file descriptors. Лечение: перезапуск или патч. - Профилирование с помощью strace:
sudo strace -cp PID— покажет сколько времени тратится на системные вызовы (read, write, open). Если 90% времени вfutex— проблема блокировок. - Ограничение ресурсов процесса: через
ulimit -m 1000000(лимит 1 ГБ) или systemd unit:MemoryMax=1G. - Для серверов: проверьте
systemctl status --full main.service— если процесс постоянно перезапускается (Restart=always), смотритеjournalctl -u main.service -n 50. - Корректировка swap: если память подходит к концу, увеличьте файл подкачки:
sudo fallocate -l 2G /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile. - Анализ OOM (Out-Of-Memory):
dmesg | grep -i 'killed process'— покажет, какой процесс убил OOM-killer.
6. Ошибки ввода-вывода и повреждение файловой системы
Сценарий: при попытке обратиться к файлу или смонтировать диск появляется I/O error или Structure needs cleaning. Это признак аппаратной проблемы (плохой сектор на HDD/SSD) или логической ошибки в файловой системе (ext4, XFS, Btrfs). Первое действие — проверка и восстановление.
Для ext4: отмонтируйте раздел и выполните sudo fsck.ext4 -f -c -y /dev/sdaX. Ключ -c запускает поиск bad-секторов, -y автоматически отвечает «да». Процесс может занять 30-120 минут (для 500 ГБ). Если диск физически умирает, создайте образ через ddrescue: sudo ddrescue /dev/sdaX /mnt/backup.img /tmp/rescue.log.
- Для XFS:
sudo xfs_repair /dev/sdaX(обязательно отмонтированный раздел). - Для Btrfs:
sudo btrfs device stats /mnt/точка— показывает ошибки контрольных сумм. Затемsudo btrfs scrub start /mnt/точка. - S.M.A.R.T. тест диска:
sudo smartctl -H /dev/sda— выводит краткий вердикт (PASSED/FAILED). Для полного теста:sudo smartctl -t long /dev/sda, ждите 2-4 часа. - Проверка таблицы разделов:
sudo fdisk -l /dev/sda— если разделы не отображаются, восстановите через testdisk (sudo apt install testdisk). - Замена диска в RAID:
cat /proc/mdstat— показывает статус рейда. Для замены сбойного члена:sudo mdadm --manage /dev/md0 --fail /dev/sdb1 && sudo mdadm --remove /dev/md0 /dev/sdb1.
7. Выводы: Профилактика и автоматизация обнаружения неполадок
Лучшая стратегия — предупреждение сбоев до их появления. Настройте мониторинг системных логов с помощью logwatch или auditd: ежедневная рассылка отчета о подозрительных событиях (неудачные входы, поломки служб). Используйте monit — демон, который перезапускает упавшие процессы и шлет алерты при превышении нагрузки (CPU>90%, память>85%).
Для контроля дискового пространства автоматизируйте скрипт проверки с отправкой в Telegram: проверяет df -h и, если процент использования превышает 85%, отправляет предупреждение. Для серверов под Linux 2026 года рекомендуется включить автообновление только для пакетов безопасности (unattended-upgrades), оставив основные обновления ручными — это снижает риск несовместимости драйверов.
Запомните три ключевые команды ежедневной диагностики: journalctl -p err -b (ошибки текущей загрузки), top -o %MEM (процессы по памяти), df -h && df -i (занятость диска и inodes). Следуя этим инструкциям, вы решите 90% типовых проблем без привлечения технической поддержки.
Добавлено: 25.04.2026
