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

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

Nick Silver By Nick Silver 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.

Поділитися

Більше з блогу

Продовжуйте читати.

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

Найкращі самохостовані додатки для Cosmos Cloud: файли, медіа, паролі, автоматизація та інше!

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

Nick SilverNick Silver 16 хв читання
Обкладинка статті Portainer проти Cosmos Cloud для керування Docker-додатками з діаграмою гібридного налаштування та неоновими блоками операцій і доступу.
Сервери та ОС

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

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

Nick SilverNick Silver 14 хв читання
Обкладинка Cosmos Cloud проти CasaOS проти Umbrel з трьома шляхами самохостингу в одному абстрактному світі хмарної мережі.
Сервери та ОС

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

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

Nick SilverNick Silver 11 хв читання

Готові розгортати? Від $2,48/міс.

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