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?
- Створи sudo-користувача без пароля, щоб мати запасний варіант.
- Використовуй 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
Це виконає безпечне перезавантаження, зберігши всі дані перед вимкненням.
Як уникнути таких ситуацій у майбутньому?
- Налаштуй моніторинг: htop, glances або Prometheus + Grafana допоможуть відстежувати перевантаження.
- Обмежуй ресурси процесів: використовуй ulimit і systemd для контролю використання CPU/RAM.
- Автоматичне знищення завислих процесів:
sudo systemctl set-property --runtime -- user.slice MemoryMax=1G
Якщо сервер завис, головне — не панікувати. Є чіткий план дій, який допоможе швидко повернути контроль.
Linux без викликів — не Linux 😏
Вміти розрулювати неочікувані ситуації — мастхев для кожного, хто працює з Linux. Видалені файли, забутий root-пароль, завислий сервер чи забитий диск — усе це не катастрофа, а просто ще один виклик, який можна швидко вирішити, якщо знати потрібні команди.
Прагнеш навчитись працювати впевнено з Linux? Це легко. В ITEDU 6 курсів з Linux для різного рівня знань. Обирай свій.
А які твої улюблені лайфхаки для troubleshooting у Linux? Ділися в коментарях – разом зробимо цей гайд ще кориснішим для всіх.