Знижка 50% усі тарифи, обмежений час. Починаючи від $2.48/mo
7 хв залишилось
Сервери та ОС

Як виправити помилку systemctl: Command Not Found на Ubuntu

Нік Сільвер By Нік Сільвер 7 хв читання Оновлено 20 лютого 2025
як виправити помилку systemctl: command not found

Один з найпотужніших та найзручніших інструментів для користувачів Linux, особливо сучасних дистрибутивів, таких як Ubuntu, — systemctl команда. Ця утиліта командного рядка зазвичай використовується для взаємодії з systemd, системою та менеджером служб.

За допомогою команди ви можете керувати системними службами, переглядати їх стан, запускати та зупиняти їх, а також включати та відключати їх під час запуску системи. Дійсно зручно, правда? Але якщо команда systemctl не знайдена або не розпізнана, ви зіткнетесь з «sudo: systemctl: команда не знайдена» помилка.

Отже, давайте поговоримо про те, що означає помилка «systemctl: команда не знайдена», різні причини, з яких ви стикаєтесь з цією помилкою, і як її виправити.

Що означає помилка systemctl: команда не знайдена?

Говорячи просто, помилка «systemctl: команда не знайдена» означає, що утиліта командного рядка systemctl недоступна або неприступна в поточному середовищі. Це може бути спричинено багатьма причинами, які зводяться до того, що середовище не є системним середовищем, або пакет systemd не встановлено на системі.

Причина може бути в тому, що пакет systemd не встановлений, або ваш дистрибутив Linux чи його версія не використовує systemd. Замість цього він використовує старіші системи керування сервісами, як-от init.d. Інша можливість - змінна окремення PATH не містить каталог, де розташований systemctl, тому ваша оболонка його не знаходить.

Тепер, коли ви розумієте, що може бути не так у вашій системі й вызвати помилку "systemctl: command not found", давайте розберемо, як перевірити, де саме проблема, і як її виправити.

Виправлення помилки systemctl: Command Not Found

У наступних кроках ми перевіримо, чи встановлений systemd у вашій системі та чи вона використовує systemctl, а також перевіримо шлях до systemctl. Після того як ми визначимо проблему, ми зробимо необхідні кроки для її виправлення.

1. Перевірка того, чи ваша система використовує systemd

Оскільки Ubuntu systemctl можна використовувати лише за наявності встановленого пакета systemd, спочатку ми перевіримо, чи повинна ваша система використовувати systemd, запустивши таку команду:

ps -p 1 -o comm=

Або ви можете перевірити версію systemd такою командою:

systemd --version

Якщо вихід показує systemd, то systemd - це ваша система ініціалізації, і systemctl Ubuntu повинна бути встановлена. Однак якщо вихід показує init або інший менеджер процесів, це означає, що ваша система використовує альтернативну систему ініціалізації, і systemctl не працюватиме, доки ви не перейдете на systemd.

Якщо ви бачите старіші системи ініціалізації, як-от Upstart або SysVinit, і хочете перейти на systemd, щоб використовувати systemctl, виконайте такі кроки:

1. Встановіть systemctl, встановивши systemd такою командою:

sudo apt install systemd-sysv

2. Перезавантажте систему, виконавши цю команду:

sudo reboot

3. Перевірте, що ваша система тепер використовує systemd:

ps -p 1 -o comm=

Вихід повинен показати systemd.

2. Забезпечення правильного встановлення systemd

У нормальних обставинах, коли systemd встановлена та працює як ваша система ініціалізації, команда systemctl повинна працювати коректно. Якщо цього не відбувається, це означає, що пакет systemd або відсутній, або встановлений неправильно.

Зверніть увагу, що якщо ви використовуєте мінімальну версію Ubuntu, наприклад контейнер Docker або хмарний екземпляр, то systemd могла не встановитися за замовчуванням. Щоб встановити systemctl через встановлення systemd, запустіть такі команди:

sudo apt update
sudo apt install systemd

Після встановлення перевірте, доступна ли команда systemctl.

3. Перевірка шляху systemctl

Поширена проблема з помилкою systemctl not found полягає в тому, що systemctl могла бути встановлена, але вона не знаходиться у PATH вашої системи. Щоб перевірити, чи існують бінарні файли systemd у типових каталогах, як-от /bin, /usr/bin або /usr/local/bin, ви можете використати таку команду:

which systemctl

Якщо systemctl знайдена в якомусь з ваших каталогів, перелічених у PATH, ви отримаєте вихід на кшталт:

/usr/bin/systemctl

Якщо systemctl не знайдена у жодному з каталогів у PATH, команда which нічого не повертає.

Однак systemctl може не працювати навіть якщо вона знайдена у ваших каталогах. Це тому, що systemctl може розташовуватися в каталозі, який не включений до PATH. У цій ситуації вам потрібно перевірити, чи входить каталог, де розташована systemctl, до системи вашого сервера, використовуючи таку команду:

echo $PATH

Вихід повинен бути щось на кшталт:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Тепер все, що вам потрібно зробити, це перевірити, чи входить каталог, де знаходиться systemctl (який ви отримали з команди which), до переліку каталогів у виході команди echo $PATH.

Якщо каталог systemctl не включений до виходу echo $PATH, вам потрібно додати його до змінної PATH. Для цього запустіть таку команду:

Для Користувачі Bash shell, відкрийте файл ~/.bashrc у текстовому редакторі:

nano ~/.bashrc

Додайте наступний рядок в кінець файлу:

export PATH=$PATH:/usr/bin

/usr/bin — типова папка, де розташована systemctl в цьому прикладі.

Тепер збережіть і закрийте файл, натиснувши CTRL + X, потім Y для підтвердження й Enter для збереження.

Для Користувачі Zsh, відкрийте файл ~/.zshrc у текстовому редакторі:

nano ~/.zshrc

Додайте наступний рядок в кінець файлу:

export PATH=$PATH:/usr/bin

/usr/bin — типова папка, де розташована systemctl в цьому прикладі.

Тепер збережіть і закрийте файл, натиснувши CTRL + X, потім Y для підтвердження й Enter для збереження.

Після завершення вищезазначених кроків використайте команду echo $PATH, щоб перевірити, чи была додана папка systemctl до вашого PATH. Тепер ви зможете запускати systemctl без помилки «systemctl: command not found».

4. Перевстановлення systemd

Якщо попередні рішення не спрацювали і ви все ще отримуєте помилку про невідому команду, повна переустановка systemd може вирішити проблему. Для цього виконайте наступні команди:

sudo apt purge systemd
sudo apt install systemd

Потім перезавантажте систему за допомогою цієї команди:

sudo reboot

Перевірте, чи працює systemctl.

5. Перевірка правильної конфігурації systemd

Іноді проблема може бути результатом неправильної конфігурації установки systemd, що призводить до помилки «systemctl: command not found». Щоб виправити цю проблему, виконайте наступну команду, і все буде готово:

sudo dpkg-reconfigure systemd

6. Застарілої Windows Subsystem for Linux (WSL)

На той випадок, якщо ви використовуєте Ubuntu під WSL (підсистема Windows для Linux) знайте, що старіші версії WSL, такі як WSL 1, не підтримують systemctl нативно, тому незалежно від того, яке з попередніх рішень ви використовуєте, ви не зможете запускати systemctl.

Якщо ви хочете користуватися функціями systemctl, вам потрібно перейти на WSL 2, яка краще підтримує systemd. Якщо ви не впевнені, чи використовуєте ви WSL, ви можете перевірити за допомогою наступної команди:

uname -a

Якщо у виводі згадується WSL, то саме тому ви бачите помилку «systemctl: command not found».

7. Використання sudo service як альтернативи systemctl

Якщо ви отримуєте помилку «systemctl: command not found», тому що ваша система не використовує systemd, ви можете використовувати команду sudo service для керування сервісами. Ця команда працює зі старішими системами ініціалізації, такими як SysVinit або Upstart. Це корисно для систем Ubuntu, які покладаються на init-скрипти замість systemd.

Наприклад, щоб запустити сервіс, ви виконали б:

sudo service <service_name> start

Завершальні думки

systemd та його утиліта командного рядка systemctl замінили більшість інших старих систем ініціалізації, таких як SysVinit та Upstart. Хоча systemd не для всіх, через її монолітний дизайн і відступ від філософії Unix, systemd все ще загально вважається переважним вибором. Сподіємося, ви змогли вирішити помилку systemctl command not available, оскільки неможливість використовувати утиліту командного рядка systemd суттєво обмежує її можливості.

Часто задавані питання

Що таке systemctl і що означає помилка systemctl: command not found?

systemctl — це утиліта командного рядка для керування сервісами в системах Linux, які запускають systemd, таких як Ubuntu. Помилка «systemctl: command not found» виникає, коли утиліта недоступна або недосяжна, зазвичай тому, що система не використовує systemd або пакет systemd не встановлений.

Чи доступна systemctl на всіх версіях Ubuntu?

Ні, systemctl доступний не на всіх версіях Ubuntu. systemctl — це частина системи ініціалізації systemd, яка є стандартною в більшості сучасних версій Ubuntu (з версії 15.04 та пізніше). Старіші версії або певні мінімальні встановлення можуть використовувати альтернативні системи ініціалізації, такі як SysVinit або Upstart.

Поділитися

Ще з блогу

Читайте далі.

Обкладинка статті про найкращі self-hosted застосунки для Cosmos Cloud з панелями застосунків навколо дашборду Cosmos.
Сервери та ОС

Найкращі self-hosted застосунки для Cosmos Cloud: файли, медіа, паролі, автоматизація та не тільки!

Maybe ви вже налаштували Cosmos Cloud і хочете знайти застосунки, що добре з ним поєднуються, або ще не визначились із Cosmos і просто хочете зрозуміти, наскільки він підходить для вашого робочого процесу

Нік СільверНік Сільвер 16 хвилин читання
Portainer проти Cosmos Cloud для керування Docker застосунками: обкладинка з діаграмою гібридного налаштування та неоновими блоками ops і access.
Сервери та ОС

Portainer проти Cosmos Cloud: що краще для керування додатками Docker

Якщо ви вже знайомі з Docker і просто шукаєте зручніший спосіб запустити зростаючий стек додатків, ось коротка відповідь на питання Portainer проти Cosmos Cloud. Portainer — кращий вибір для безпосереднього

Нік СільверНік Сільвер 14 хв читання
Порівняльна графіка Cosmos Cloud, CasaOS та Umbrel, що показує три варіанти самостійного хостингу в межах однієї абстрактної хмарної мережі.
Сервери та ОС

Cosmos Cloud проти CasaOS проти Umbrel: яка платформа для самостійного хостингу підійде саме вам?

Коротко: CasaOS досі найлегший варіант для початку, Umbrel має найохайніший і найретельніше підібраний інтерфейс, а Cosmos Cloud стає доцільнішим, коли потрібен щільніший контроль над доменами

Нік СільверНік Сільвер 11 хв читання

Готові до розгортання? З $2.48/міс.

Незалежна хмара з 2008 року. AMD EPYC, NVMe, 40 Gbps. Повернення коштів протягом 14 днів.