50% zniżki wszystkie plany, ograniczony czas. Rozpoczęcie o godz $2.48/mo
Pozostało 7 minut
Serwery i system operacyjny

Jak naprawić błąd systemctl: Nie znaleziono polecenia w systemie Ubuntu

Nicka Silvera By Nicka Silvera 7 minut czytania Zaktualizowano 20 lutego 2025 r
jak naprawić systemctl: nie znaleziono polecenia

Jednym z najpotężniejszych i najbardziej przydatnych narzędzi dla użytkowników Linuksa, zwłaszcza nowoczesnych dystrybucji, takich jak Ubuntu, jest polecenie systemctl. To narzędzie wiersza poleceń jest zwykle używane do interakcji z systemd, systemem i menedżerem usług.

Za pomocą polecenia możesz zarządzać usługami systemowymi, przeglądać ich stan, uruchamiać lub zatrzymywać je oraz włączać i wyłączać je podczas uruchamiania systemu. Całkiem przydatne, prawda? Jeśli jednak polecenie systemctl nie zostanie znalezione lub rozpoznane, napotkasz problem „sudo:systemctl: nie znaleziono polecenia” błąd.

Porozmawiajmy więc o tym, co oznacza błąd „systemctl: nie znaleziono polecenia”, o różnych przyczynach jego wystąpienia i o tym, jak go naprawić.

Co oznacza systemctl: Nie znaleziono polecenia?

Mówiąc najprościej, błąd „systemctl: nie znaleziono polecenia” oznacza, że ​​narzędzie wiersza poleceń systemctl nie jest dostępne lub dostępne w bieżącym środowisku. Może to wynikać z wielu powodów, z których wszystkie sprowadzają się do tego, że środowisko jest środowiskiem niesystemowym lub pakiet systemd nie jest zainstalowany w systemie.

Zasadniczo pakiet systemd nie jest zainstalowany lub twoja dystrybucja Linuksa lub wersja nie używa systemd; używa raczej starszych systemów zarządzania usługami, takich jak init.d. Inną możliwością jest to, że zmienna środowiskowa PATH nie zawiera katalogu, w którym znajduje się systemctl, co oznacza, że ​​powłoka nie może go znaleźć.

Teraz, gdy masz już pojęcie, co może być nie tak z Twoim systemem, co może prowadzić do błędu „systemctl: nie znaleziono polecenia”, przyjrzyjmy się, jak sprawdzić, gdzie leży problem i jak go naprawić.

Naprawianie systemctl: Błąd nie znaleziono polecenia

W kolejnych krokach sprawdzimy, czy Twój system ma zainstalowany systemd i używa systemctl, czy nie, a także sprawdzimy ścieżkę systemctl. Po zweryfikowaniu problemu podejmiemy niezbędne kroki, aby naprawić błąd.

1. Sprawdzanie, czy Twój system używa systemd

Ponieważ Ubuntu systemctl może być używany tylko wtedy, gdy masz zainstalowany pakiet systemd, najpierw sprawdzimy, czy Twój system powinien używać systemd, uruchamiając następujące polecenie:

ps -p 1 -o comm=

Możesz też sprawdzić wersję systemową za pomocą następującego polecenia:

systemd --version

Jeśli wyjściem jest systemd, to systemd jest twoim systemem init i powinien mieć zainstalowany Ubuntu systemctl. Jeśli jednak wynikiem jest init lub inny menedżer procesów, oznacza to, że Twój system korzysta z alternatywnego systemu inicjalizacji, a systemctl nie będzie działać, chyba że przeprowadzisz migrację do systemd.

Jeśli widzisz starsze systemy inicjalizacji, takie jak Upstart lub SysVinit i chcesz przełączyć się na systemd, aby używać systemctl, wykonaj następujące kroki:

1. Zainstaluj systemctl, instalując systemd za pomocą następującego polecenia:

sudo apt install systemd-sysv

2. Uruchom ponownie system, uruchamiając to polecenie:

sudo reboot

3. Sprawdź, czy Twój system używa teraz systemd:

ps -p 1 -o comm=

Dane wyjściowe powinny być teraz usystematyzowane.

2. Upewnij się, że systemd jest poprawnie zainstalowany

W normalnych okolicznościach, gdy systemd jest zainstalowany i działa jako system init, polecenie systemctl powinno działać poprawnie. Jeśli tak nie jest, oznacza to, że brakuje pakietu systemd lub jest on nieprawidłowo zainstalowany.

Pamiętaj, że jeśli używasz minimalnej wersji Ubuntu, takiej jak kontener Docker lub instancja w chmurze, systemd mógł nie zostać domyślnie zainstalowany. Aby zainstalować systemctl poprzez instalację systemd, uruchom następujące polecenia:

sudo apt update
sudo apt install systemd

Po zainstalowaniu sprawdź, czy dostępna jest komenda systemctl.

3. Sprawdzanie ścieżki systemctl

Częstym problemem związanym z błędem „nie znaleziono systemuctl” jest to, że systemctl mógł zostać zainstalowany, ale nie znajduje się on w ścieżce systemowej PATH. Aby sprawdzić, czy pliki binarne systemowe istnieją w typowych katalogach, w których się znajdują, np. /bin, /usr/bin lub /usr/local/bin, możesz użyć następującego polecenia:

which systemctl

Jeśli systemctl zostanie znaleziony w którymkolwiek z katalogów wymienionych w PATH, powinieneś otrzymać taki wynik:

/usr/bin/systemctl

Jeśli systemctl nie zostanie znaleziony w żadnym z katalogów w PATH, polecenie who nic nie zwróci.

Jednak systemctl może nadal nie działać, mimo że znajduje się w twoich katalogach. Dzieje się tak, ponieważ systemctl może znajdować się w katalogu, który nie jest zawarty w PATH. W tej sytuacji będziesz musiał sprawdzić, czy katalog, w którym znajduje się systemctl, jest częścią twojego systemu, używając następującego polecenia:

echo $PATH

Dane wyjściowe powinny wyglądać mniej więcej tak:

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

Teraz wszystko, co musisz zrobić, to sprawdzić, czy katalog, w którym znajduje się systemctl (który otrzymałeś za pomocą polecenia Which) znajduje się w katalogach wymienionych w wynikach polecenia echo $PATH.

Jeśli katalog systemctl nie znajduje się w wynikach echo $PATH, będziesz musiał dodać go do zmiennej PATH. Aby to zrobić, musisz uruchomić następujące polecenie:

Dla Użytkownicy powłoki Bash, otwórz plik ~/.bashrc w edytorze tekstu:

nano ~/.bashrc

Dodaj następujący wiersz na końcu pliku:

export PATH=$PATH:/usr/bin

/usr/bin to typowy katalog, w którym w tym przykładzie znajduje się systemctl.

Teraz zapisz i zamknij plik, naciskając CTRL + X, następnie Y, aby potwierdzić i Enter, aby zapisać.

Dla Użytkownicy Zsh, Otwórz plik ~/.zshrc w edytorze tekstu:

nano ~/.zshrc

Dodaj następujący wiersz na końcu pliku:

export PATH=$PATH:/usr/bin

/usr/bin to typowy katalog, w którym w tym przykładzie znajduje się systemctl.

Teraz zapisz i zamknij plik, naciskając CTRL + X, następnie Y, aby potwierdzić i Enter, aby zapisać.

Po wykonaniu powyższych kroków użyj polecenia echo $PATH, aby sprawdzić, czy katalog systemctl został dodany do ścieżki PATH. Teraz powinieneś móc uruchomić systemctl bez napotkania błędu „systemctl: nie znaleziono polecenia”.

4. Ponowna instalacja systemd

Jeśli poprzednie poprawki nie działają i nadal pojawia się komunikat o błędzie „nie znaleziono polecenia”, całkowita ponowna instalacja systemd może rozwiązać problem. Aby to zrobić, uruchom następujące polecenia:

sudo apt purge systemd
sudo apt install systemd

Następnie zrestartuj system za pomocą tego polecenia:

sudo reboot

Sprawdź, czy systemctl działa.

5. Sprawdzanie, czy systemd jest poprawnie skonfigurowany

Czasami problem może być tak prosty, jak źle skonfigurowana instalacja systemd, powodująca błąd „systemctl: nie znaleziono polecenia”. Aby rozwiązać ten problem, wystarczy uruchomić następujące polecenie i gotowe:

sudo dpkg-reconfigure systemd

6. Nieaktualny podsystem Windows dla systemu Linux (WSL)

Jeśli nie używasz Ubuntu w ramach WSL (podsystem Windows dla systemu Linux) powinieneś wiedzieć, że starsze wersje WSL, takie jak WSL 1, nie obsługują natywnie systemuctl, więc niezależnie od tego, której z poprzednich poprawek użyjesz, nie będziesz mógł uruchomić systemctl.

Jeśli chcesz skorzystać z funkcji systemctl, będziesz musiał dokonać aktualizacji do wersji WSL 2, która lepiej obsługuje systemd. Jeśli nie masz pewności, czy używasz WSL, możesz to sprawdzić, używając następującego polecenia:

uname -a

Jeśli w wynikach pojawia się wzmianka o WSL, dlatego pojawia się błąd „systemctl: nie znaleziono polecenia”.

7. Korzystanie z usługi sudo jako alternatywy dla systemctl

Jeśli napotykasz błąd „systemctl: nie znaleziono polecenia”, ponieważ Twój system nie używa systemd, możesz użyć polecenia sudo service do zarządzania usługami. To polecenie działa ze starszymi systemami init, takimi jak SysVinit lub Upstart. Jest to przydatne w systemach Ubuntu, które opierają się na skryptach init zamiast systemd.

Na przykład, aby uruchomić usługę, uruchom:

sudo service <service_name> start

Ostatnie przemyślenia

systemd i jego narzędzie wiersza poleceń systemctl zastąpiły większość innych starszych systemów init, takich jak SysVinit i Upstart. Choć systemd może nie być rozwiązaniem dla każdego, ze względu na jego monolityczną konstrukcję i filozofię nieuniksową, systemd jest nadal powszechnie uważany za najczęstszy wybór. Mamy więc nadzieję, że udało Ci się rozwiązać błąd dotyczący braku dostępności polecenia systemctl, ponieważ brak możliwości użycia narzędzia wiersza poleceń Systemd poważnie ogranicza jego możliwości.

Często zadawane pytania

Co to jest systemctl i co oznacza systemctl: Nie znaleziono polecenia?

systemctl to narzędzie wiersza poleceń służące do zarządzania usługami w systemach Linux z systemem systemd, takich jak Ubuntu. Błąd „systemctl: nie znaleziono polecenia” występuje, gdy narzędzie nie jest dostępne lub dostępne, zwykle dlatego, że system nie używa systemud lub pakiet systemd nie jest zainstalowany.

Czy systemctl jest dostępny we wszystkich wersjach Ubuntu?

Nie, systemctl nie jest dostępny we wszystkich wersjach Ubuntu. systemctl jest częścią systemu init systemd, który jest domyślny w większości nowoczesnych wersji Ubuntu (od 15.04). Starsze wersje lub niektóre minimalne instalacje mogą zamiast tego używać alternatywnych systemów init, takich jak SysVinit lub Upstart.

Udział

Więcej z bloga

Czytaj dalej.

Najlepsze aplikacje hostowane samodzielnie, które można uruchomić w chmurze Cosmos. Obraz okładki z panelami aplikacji wokół pulpitu nawigacyjnego Cosmos.
Serwery i system operacyjny

Najlepsze aplikacje hostowane samodzielnie, które można uruchomić w chmurze Cosmos: pliki, multimedia, hasła, automatyzacja i wiele więcej!

Być może skonfigurowałeś Cosmos Cloud i teraz chcesz zobaczyć, jakie aplikacje dobrze z nią pasują, a może nawet jeszcze nie zdecydowałeś się na Cosmos i po prostu chcesz zobaczyć, jak dobrze pasuje do Twojej pracy.

Nicka SilveraNicka Silvera 16 minut czytania
Portainer vs Cosmos Cloud do zarządzania aplikacjami Docker z hybrydowym diagramem konfiguracji i neonowymi operacjami a blokami dostępu.
Serwery i system operacyjny

Portainer vs Cosmos Cloud: najlepsze dopasowanie do zarządzania aplikacjami Docker

Jeśli znasz już Dockera i chcesz po prostu czystszego sposobu uruchamiania rosnącego stosu aplikacji, oto krótka odpowiedź na pytanie Portainer vs Cosmos Cloud. Portainer to mocniejszy wybór w przypadku reżyserii

Nicka SilveraNicka Silvera 14 minut czytania
Grafika przedstawiająca trzy hostowane ścieżki w jednym abstrakcyjnym świecie sieci w chmurze.
Serwery i system operacyjny

Cosmos Cloud vs CasaOS vs Umbrel: która platforma samoobsługowa pasuje do Twojej konfiguracji?

Krótka odpowiedź jest taka, że ​​CasaOS jest nadal najłatwiejszym miejscem na rozpoczęcie, Umbrel ma najczystszy, starannie wyselekcjonowany styl, a Cosmos Cloud ma więcej sensu, gdy chcesz mieć ściślejszą kontrolę nad domeną

Nicka SilveraNicka Silvera 11 minut czytania

Gotowy do wdrożenia? Od 2,48 USD/mies.

Niezależna chmura, od 2008. AMD EPYC, NVMe, 40 Gbps. 14-dniowy zwrot pieniędzy.