Сценарии решения проблем в Linux: вызовы и решения из реального мира

Linux – это мощная и надежная операционная система, но даже опытные пользователи сталкиваются с непредвиденными проблемами. Будь то удаленный файл, забытый пароль root или медленная система, знание эффективных методов устранения неполадок является ключом к становлению настоящим экспертом по Linux.

Этот руководство представляет реальные сценарии решения проблем в Linux вместе с пошаговыми решениями, которые актуальны для системных администраторов, разработчиков и обычных пользователей Linux.

Сценарий 1: Вы случайно удалили важный файл

Вы случайно удалили важный файл, используя команду rm, и теперь вам нужно восстановить его. В отличие от Windows и macOS, в Linux нет встроенного “Корзины” для файлов, удаленных из терминала.

Ваши варианты восстановления зависят от используемой файловой системы.

Для файловых систем EXT3/EXT4

Используйте extundelete, который является утилитой с открытым исходным кодом, предназначенной для восстановления удаленных файлов из файловых систем ext3 и ext4 в Linux.

sudo apt install extundelete  # Debian-based  
sudo yum install extundelete  # RHEL-based  

Перед попыткой восстановления отмонтируйте раздел, чтобы предотвратить дальнейшую запись, которая могла бы перезаписать удаленные данные:

sudo umount /dev/sdX

Затем выполните следующую команду для восстановления удаленного файла и убедитесь, что замените /dev/sdX на фактический раздел, где был удален файл.

sudo extundelete /dev/sdX --restore-all

Для файловых систем XFS, Btrfs или NTFS

Если ваша система использует XFS, Btrfs или NTFS, лучшим вариантом будет использование инструмента testdisk.

sudo apt install testdisk  # Debian-based  
sudo yum install testdisk  # RHEL-based  

Запустите testdisk и следуйте интерактивным подсказкам для восстановления потерянных файлов.

sudo testdisk

Предупреждения по профилактике:

    • Используйте trash-cli: Вместо rm используйте trash-cli, чтобы отправить файлы в восстановимый корзину.
sudo apt install trash-cli  
trash-put myfile.txt  
  • Включите регулярное резервное копирование: Настройте rsync или Timeshift для автоматического резервного копирования важных файлов.

Сценарий 2: Восстановление забытого пароля root

Вы забыли пароль root и не можете выполнять административные задачи, что означает, что вы не можете устанавливать программное обеспечение, изменять системные настройки или получить доступ к важным файлам.

Вы можете сбросить пароль root, загрузив режим восстановления или изменяя загрузчик GRUB.

Использование режима восстановления (Ubuntu/Debian)

Сначала перезагрузите систему и удерживайте клавишу Shift во время запуска, чтобы получить доступ к меню GRUB, затем выберите «Расширенные опции» → «Режим восстановления» и выберите «Перейти в оболочку root».

Здесь снова примонтируйте корневую файловую систему для записи и сбросьте пароль root.

mount -o remount,rw /
passwd root

Перезагрузите систему.

reboot

Используя rd.break (RHEL/CentOS/Fedora)

Сначала перезагрузите систему, нажмите клавишу e в меню GRUB и найдите строку, начинающуюся с linux, и добавьте rd.break в конце.

Затем примонтируйте корневую файловую систему и сбросьте пароль root.

mount -o remount,rw /sysroot  
chroot /sysroot  
passwd root  

Наконец, выйдите и перезагрузитесь.

exit  
reboot  

Советы по предотвращению:

  • Создайте пользователя sudo без пароля, чтобы избежать блокировки доступа к root.
  • Используйте SSH-ключи вместо паролей для аутентификации.

Сценарий 3: Вы установили пакет, но он не работает

Вы установили пакет, но при попытке запустить его появляется сообщение «команда не найдена», что обычно происходит, когда двоичный файл не находится в пути вашей системы PATH, пакет установлен неправильно или отсутствует зависимость.

Решение состоит в том, что сначала вам нужно проверить, установлен ли пакет или нет.

dpkg -l | grep package-name  # Debian-based  
rpm -qa | grep package-name  # RHEL-based  

Если он отсутствует, переустановите его:

sudo apt install package-name  
sudo yum install package-name  

Сначала проверьте, есть ли команда в вашей системе PATH.

which package-name  
echo $PATH

Если бинарный файл находится в нестандартном месте, добавьте его в PATH:

export PATH=$PATH:/usr/local/bin  

Советы по предотвращению:

  • Перезапустите терминал или выполните hash -r после установки новых пакетов.
  • Используйте менеджеры пакетов, такие как Snap или Flatpak, которые лучше обрабатывают зависимости.

Сценарий 4: У вашего устройства заканчивается место на диске

Ваша система отображает ошибку “Нет свободного места на устройстве”, что мешает обновлениям программного обеспечения, ведению журналов и нормальной работе.

Вот как восстановить место на диске и поддерживать вашу систему в рабочем состоянии.

Шаг 1: Проверьте использование диска

Сначала вам нужно проверить, сколько места занято на каждом разделе вашей системы, используя команду df.

df -h

Шаг 2: Найдите и удалите большие файлы

Сначала найдите самые большие файлы, занимающие место, запустив команду du, которая просканирует вашу систему и выведет 10 самых больших файлов или каталогов. Удалите ненужные файлы с помощью rm или переместите их на внешний диск.

du -ah / | sort -rh | head -10

Шаг 3: Удалите ненужные журналы

Журналы необходимы для устранения неполадок и мониторинга активности системы, но они могут быстро расти и занимать значительное количество дискового пространства.

Со временем старые журналы могут больше не понадобиться, что делает их основными кандидатами для очистки.

sudo journalctl --vacuum-time=2d  # Deletes logs older than 2 days  
sudo apt autoclean                # Removes outdated package files  

Шаг 4: Удалите старые ядра (Ubuntu/Debian)

Когда вы обновляете свою систему, особенно на Ubuntu или дистрибутивах на основе Debian, новые версии ядра Linux часто устанавливаются.

Однако старые ядра автоматически не удаляются, и со временем они могут накапливаться и занимать значительное количество дискового пространства.

Удаление их является безопасным и эффективным способом освобождения места, не влияя на функциональность вашей системы.

sudo apt autoremove --purge  

Советы по предотвращению:

  • Настройка вращения журналов: Используйте logrotate для автоматического управления размерами журнальных файлов и сроками их хранения.
  • Мониторинг использования диска: Установите инструменты, такие как ncdu, чтобы отслеживать использование диска и определять причины нехватки места.
  • Регулярная очистка: Запланируйте периодическую очистку для удаления временных файлов, кэшей и неиспользуемых пакетов.

Сценарий 5: Ваш сервер внезапно не реагирует

Вы управляете сервером Linux, и внезапно он перестает отвечать, и когда вы пытаетесь подключиться через SSH, соединение прерывается по таймауту или отказывается устанавливаться. Вы можете даже заметить, что сервер все еще включен, но не реагирует на команды.

Эта ситуация может быть вызвана различными проблемами, включая:

  • Высокое использование ЦП или памяти из-за аварийных процессов.
  • Узкие места ввода-вывода на диске, когда система перегружена операциями чтения/записи.
  • Паника ядра или сбои системы.
  • Сбои в сети, препятствующие удаленному доступу.

Чтобы восстановить управление, выполните эти шаги по устранению неполадок.

Шаг 1: Доступ к серверу локально или через TTY

Если SSH не работает, попробуйте получить доступ к серверу напрямую или через сеанс TTY:

  • На физическом компьютере используйте локальную консоль.
  • На виртуальной машине используйте консоль гипервизора.
  • Для Linux-системы переключитесь на другой сеанс TTY с помощью Ctrl + Alt + F2 (или F3, F4 и т. д.).

Шаг 2: Проверка загрузки системы

После входа в систему проверьте загрузку и использование ресурсов, которые показывают средние значения загрузки системы за 1, 5 и 15 минут. Значение загрузки, превышающее количество ядер ЦП, указывает на высокую нагрузку.

uptime  

Затем используйте top или htop, чтобы мониторить процессы в реальном времени:

top  
Or
htop

Ищите процессы, потребляющие большое количество ЦП или памяти.

Шаг 3: Определение и завершение запущенных процессов

Чтобы определить наиболее ресурсоемкие процессы, запустите:

ps aux --sort=-%cpu | head  

Это покажет список процессов, потребляющих больше всего ЦП, где вы можете найти проблемный процесс и завершить его с помощью:

kill -9 PID  

Замените PID на идентификатор процесса проблемного приложения.

Шаг 4: Проверка системных журналов

Если система по-прежнему отвечает, проверьте журналы на наличие ошибок:

sudo tail -f /var/log/syslog  
Or
sudo dmesg | tail  

Эти команды отображают недавние системные сообщения и журналы ядра, которые могут помочь выявить проблемы с аппаратным или программным обеспечением.

Шаг 5: Безопасная перезагрузка с помощью SysRq

Если система полностью зависла, используйте комбинацию клавиш SysRq для безопасной перезагрузки:

echo b > /proc/sysrq-trigger  

Это вызывает безопасную перезагрузку, обеспечивая целостность данных путем синхронизации дисков и отмонтирования файловых систем.

Заключение

Устранение неполадок – это неотъемлемое умение для каждого пользователя Linux. Независимо от того, восстановление удаленных файлов, сброс паролей или исправление системных ошибок, знание правильных команд может сэкономить время и избавить от разочарований.

У вас есть собственные советы по устранению неполадок? Поделитесь ими в комментариях! Давайте создадим полезное сообщество Linux вместе.

Source:
https://www.tecmint.com/linux-troubleshooting-tips/