Одним із найпотужніших і зручних інструментів для користувачів 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.