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

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

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

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

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

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

Що означає systemctl: Команда не знайдена?

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

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

Тепер, коли ви маєте уявлення про те, що може бути не так із вашою системою, що призводить до помилки «systemctl: команда не знайдена», давайте подивимося, як ви можете перевірити, де саме полягає ваша проблема, і як її виправити.

Виправлення помилки systemctl: команда не знайдена

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

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

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

ps -p 1 -o comm=

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

systemd --version

Якщо результатом є systemd, тоді systemd є вашою системою ініціалізації та має встановити Ubuntu systemctl. Однак, якщо результатом є 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, відкрийте файл ~/.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: команда не знайдена».

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

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

sudo apt purge systemd
sudo apt install systemd

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

sudo reboot

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

5. Перевірка правильності налаштування systemd

Іноді проблема може бути такою простою, як неправильно налаштована інсталяція systemd, що призводить до помилки «systemctl: команда не знайдена». Все, що вам потрібно зробити, щоб вирішити цю проблему, це запустити таку команду, і все готово:

sudo dpkg-reconfigure systemd

6. Застаріла підсистема Windows для Linux (WSL)

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

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

uname -a

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

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

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

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

sudo service <service_name> start

Заключні думки

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

FAQ

Що таке systemctl і що означає systemctl: Command Not Found?

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

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

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

Поділіться

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

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

Найкращі самостійні програми, які можна запускати з Cosmos Cloud, зображення обкладинки з панелями програм навколо інформаційної панелі Cosmos.
Сервери та ОС

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

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

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

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 Гбіт/с. 14-денне повернення грошей.