5 реальних викликів при роботі з Linux та як їх виправити

Linux — це як відкритий океан: іноді вода тиха, а інколи штормить так, що здається, ніби ось-ось затягне у вир. Система раптом гальмує, файли зникають, мережа поводиться якось дивно…

Знайомо? Спокійно, це не катастрофа — це виклик. А значить, є шанс прокачати навички роботи з Linux. 

Ми зібрали 5 найпоширеніших сценаріїв несправностей і покрокові рішення, які допоможуть вирішити ситуацію та тримати систему під контролем. Без води, з командами та описом кожного етапу.

Сценарій 1:

Упс, випадково видалив важливий файл у Linux

Всі були в такій ситуації: замість rm myfile.txt випадково rm -rf мій_проєкт, і ось уже термінал мовчить, а важливий файл зник. У Windows ти б просто відкрив кошик, але в Linux такого немає. Проте є способи відновити файли, і найкращий підхід залежить від файлової системи.

Відновлення файлів у EXT3/EXT4

Якщо диск використовує EXT3 або EXT4, допоможе утиліта extundelete. Але є важливий нюанс: перед початком відновлення розділ треба відключити, щоб уникнути перезапису видалених даних.

1. Встановлюємо extundelete:

    sudo apt install extundelete  # для Debian-based дистрибутивів
    sudo yum install extundelete  # для RHEL-based дистрибутивів

    2. Відключаємо розділ (замінюємо /dev/sdX на свій):

    sudo umount /dev/sdX

    3. Запускаємо відновлення всіх файлів:

      sudo extundelete /dev/sdX --restore-all

      Після цього знайдені файли з’являться в директорії RECOVERED_FILES.

      Відновлення файлів у XFS, Btrfs або NTFS

      Тут extundelete не допоможе, зате є потужний інструмент testdisk.

      1. Встановлюємо:

        sudo apt install testdisk  # для Debian-based
        sudo yum install testdisk  # для RHEL-based

        2. Запускаємо testdisk:

          sudo testdisk

          3. Слідуємо інструкціям на екрані, щоб знайти та відновити файли.

            Як не наступати на ті ж граблі?

            1. Використовуй trash-cli: замість rm, щоб мати «кошик»:

              sudo apt install trash-cli  
              trash-put важливий_файл.txt  

              2. Налаштуй резервні копії: rsync або Timeshift допоможуть уникнути таких моментів.

              Головне — не панікувати. А якщо видалив файл — просто дій за інструкцією.

                Сценарій 2:

                От халепа, забув root-пароль у Linux

                Всі ми люди — буває, що пароль від root вилітає з голови. Проблема? Ні, черговий виклик. 

                Без root-доступу ти не зможеш змінити системні налаштування, встановлювати пакети чи отримати доступ до критичних файлів. Але не хвилюйся — Linux завжди має план Б. Ось як скинути root-пароль та повернути собі контроль над системою.

                Варіант 1: Скидання пароля через Recovery Mode (Ubuntu/Debian)

                Якщо використовуєш Ubuntu або Debian, можна скористатися Recovery Mode.

                1. Перезавантажуєш систему й під час завантаження утримуєш Shift, поки не з’явиться меню GRUB.

                2. Обираєш «Advanced options» → «Recovery mode», потім «Drop to root shell prompt».

                3. Робиш файлову систему доступною для запису:

                  mount -o remount,rw /

                  4. Скидаєш пароль root:

                    passwd root

                    5. Перезавантажуєш систему:

                      reboot

                      Юхуууу, у тебе вийшло. Тепер можеш увійти з новим паролем.

                      Варіант 2: Скидання пароля через GRUB (rd.break) (RHEL/CentOS/Fedora)

                      Для систем на базі RHEL, CentOS або Fedora процес трохи відрізняється.

                      1. Перезавантажуєш сервер та натискаєш e, коли з’явиться меню GRUB.

                      2. Шукаєш рядок, що починається з linux, і додаєш rd.break у його кінець.

                      3. Натискаєш Ctrl+X для запуску в режимі відновлення.

                      4. Монтуєш root-файлову систему та переходиш в середовище chroot:

                        mount -o remount,rw /sysroot  
                        chroot /sysroot  

                        5. Скидаєш пароль root:

                          passwd root

                          6. Виходиш та перезавантажуєш систему:

                            exit  
                            reboot  

                            Система завантажиться, і ти зможеш увійти з новим паролем.

                            Як більше не втрачати доступ до root?
                            1. Створи sudo-користувача без пароля, щоб мати запасний варіант.
                            2. Використовуй SSH-ключі, а не паролі, для аутентифікації — так безпечніше.

                            Root-доступ — це відповідальність, а не тільки суперсили. Тож бережи свої паролі або будь готовий їх скидати.

                            Сценарій 3:

                            Встановив пакет, а він не працює

                            Класика жанру: щойно встановив пакет, запускаєш команду — і отримуєш «command not found». Чому так? Є кілька причин:

                            • Пакет не встановився або встановився криво.
                            • Бінарник пакета не знаходиться у PATH.
                            • Пакету бракує залежностей.

                            1. Перевірь, чи пакет встановлено

                              Спершу треба впевнитися, що система взагалі його бачить.

                              dpkg -l | grep package-name  # Для Debian-based (Ubuntu, Debian)
                              rpm -qa | grep package-name  # Для RHEL-based (CentOS, Fedora)

                              Якщо вивід пустий — значить, пакету просто немає в системі. Ставимо його:

                              sudo apt install package-name  # Для Debian-based
                              sudo yum install package-name  # Для RHEL-based

                              2. Перевір, чи команда є в PATH

                                Навіть якщо пакет встановлено, система може його не знаходити. Дізнайся, де ховається його бінарник:

                                which package-name

                                А тепер перевір, які директорії взагалі є в $PATH:

                                echo $PATH

                                Якщо команда which нічого не повернула, а вивід echo $PATH не містить потрібної директорії — треба її додати.

                                3. Додай шлях у PATH

                                  Якщо бінарник лежить, скажімо, у /usr/local/bin, додай його в $PATH:

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

                                  Щоб зміни збереглися після перезавантаження, допиши це в ~/.bashrc або ~/.bash_profile:

                                  echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrc
                                  source ~/.bashrc
                                  Як уникнути таких ситуацій?

                                  1. Перезапускай термінал або виконуй команду:

                                    hash -r  

                                    2. Використовуй Snap або Flatpak, вони краще працюють із залежностями:

                                      sudo apt install snapd  
                                      snap install package-name  

                                      Тепер твоя система знає, де шукати пакети, а ти — як вирішувати подібні виклики.

                                      Сценарій 4:

                                      Ой, закінчилось місце на диску

                                      Система почала вередувати, оновлення не встановлюються, а термінал кричить «No space left on device»? Значить, час звільнити місце.

                                      Диски в Linux не забиваються просто так — лог-файли, старі ядра, кеші пакетів та забуті великі файли швидко з’їдають вільний простір. Нумо розбиратися, що тут можна почистити.

                                      1. Перевір, що займає місце

                                        Насамперед, подивись, скільки місця зайнято та які розділи заповнені:

                                        df -h

                                        Ця команда покаже вільний простір у зручному (human-readable) форматі.

                                        2. Знайди та видали великі файли

                                          Щоб знайти найбільші 10 файлів та директорій, використовуй du:

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

                                          Якщо знайдеш щось непотрібне, можна його видалити:

                                          rm -rf /шлях/до/непотрібного_файлу

                                          А якщо файл ще знадобиться — просто перенеси його на зовнішній диск.

                                          3. Підчисть старі логи

                                            Журнали системи можуть займати гігабайти місця. Видали логи, яким більше двох днів:

                                            sudo journalctl --vacuum-time=2d  

                                            Також очисть кеш застарілих пакетів:

                                            sudo apt autoclean

                                            4. Видали старі ядра (Ubuntu/Debian)

                                              Кожне оновлення ядра залишає старі версії, які можуть займати багато місця. Почисти їх так:

                                              sudo apt autoremove –purge

                                              Як підтримувати порядок на диску?

                                              1. Налаштуй автоматичне керування логами за допомогою logrotate.

                                              2. Встанови ncdu, щоб легко переглядати, що займає місце:

                                              sudo apt install ncdu  
                                              ncdu /

                                              3. Плануй регулярний клінінг — кеші, тимчасові файли та невикористовувані пакети можна чистити автоматично.

                                                Linux не любить безладу — допоможи йому залишатися в чистоті, і він працюватиме без збоїв.

                                                Сценарій 5:

                                                Alert, сервер завис і не реагує

                                                Уяви, що твій Linux-сервер раптово перестав відповідати. SSH відмовляється підключатися, але сервер явно ще працює. Що сталося? Причини можуть бути різні:

                                                • Процеси, що зжирають CPU/RAM
                                                • Перевантаження дискових операцій
                                                • Kernel panic або крах системи
                                                • Мережеві збої

                                                Давай по кроках відновимо контроль над сервером.

                                                1. Отримай доступ до сервера локально або через TTY

                                                  Якщо SSH недоступний, спробуй підключитися напряму:
                                                  1. Фізичний сервер? Використовуй локальну консоль.
                                                  2. Віртуалка? Підключайся через інтерфейс гіпервізора (VMware, Proxmox, AWS Console тощо).

                                                  Якщо доступний екран, спробуй перемикнутися на інший TTY:

                                                  Ctrl + Alt + F2  # або F3, F4…

                                                  Успішно залогінився? Йдемо далі.

                                                  2. Перевір навантаження на систему

                                                    Подивись завантаженість CPU:

                                                    uptime

                                                    Якщо середнє навантаження (load average) вище кількості CPU-ядер — система перевантажена.

                                                    Запускай моніторинг процесів у реальному часі:

                                                    top  # або більш зручний
                                                    htop

                                                    Шукай процеси, що з’їдають багато CPU або RAM.

                                                    3. Знайди та знищ ресурсоємні процеси

                                                      Перевір, що саме жере процесор:

                                                      ps aux --sort=-%cpu | head

                                                      Або найбільш ненажерливі процеси в пам’яті:

                                                      ps aux --sort=-rss | head

                                                      Знайди PID підозрілого процесу і знищ його:

                                                      kill -9 PID  # заміни PID на номер процесу

                                                      4. Подивись логи на предмет помилок

                                                        Якщо система ще відповідає, шукай підказки у логах:

                                                        sudo tail -f /var/log/syslog  # Загальні системні логи
                                                        sudo dmesg | tail             # Останні повідомлення ядра

                                                        Якщо бачиш повідомлення про OOM (Out of Memory) — це значить, що пам’ять закінчилася, і система вбиває процеси.

                                                        5. Якщо система зависла — м’яко перезавантажуємо через SysRq

                                                          Коли сервер повністю завис, але ще хоч якось реагує, використай магічний SysRq для безпечного ребута:

                                                          echo b > /proc/sysrq-trigger

                                                          Це виконає безпечне перезавантаження, зберігши всі дані перед вимкненням.

                                                          Як уникнути таких ситуацій у майбутньому?
                                                          1. Налаштуй моніторинг: htop, glances або Prometheus + Grafana допоможуть відстежувати перевантаження.
                                                          2. Обмежуй ресурси процесів: використовуй ulimit і systemd для контролю використання CPU/RAM.
                                                          3. Автоматичне знищення завислих процесів:
                                                          sudo systemctl set-property --runtime -- user.slice MemoryMax=1G

                                                          Якщо сервер завис, головне — не панікувати. Є чіткий план дій, який допоможе швидко повернути контроль.

                                                          Linux без викликів — не Linux 😏

                                                          Вміти розрулювати неочікувані ситуації — мастхев для кожного, хто працює з Linux. Видалені файли, забутий root-пароль, завислий сервер чи забитий диск — усе це не катастрофа, а просто ще один виклик, який можна швидко вирішити, якщо знати потрібні команди.

                                                          Прагнеш навчитись працювати впевнено з Linux? Це легко. В ITEDU 6 курсів з Linux для різного рівня знань. Обирай свій.

                                                          А які твої улюблені лайфхаки для troubleshooting у Linux? Ділися в коментарях – разом зробимо цей гайд ще кориснішим для всіх.

                                                          Залишити відповідь

                                                          Дякуємо, що поділились