Jak wyświetlić listę usług Linux za pomocą systemctl
Opublikowany: 2022-10-23Twój komputer z systemem Linux opiera się na wielu zadaniach w tle zwanych usługami lub demonami. W dystrybucjach opartych na systemd masz wbudowane polecenia, które pozwalają zobaczyć, które usługi są uruchomione, wyłączone lub nie powiodło się.
Usługi i demony
Usługi i demony są zadaniami w tle, które działają bez interfejsu użytkownika, nie wymagają interakcji i są zwykle uruchamiane podczas uruchamiania komputera.
Kiedyś usługi były uruchamiane przez init
, co było pierwszym procesem, który został uruchomiony. Szczegóły usług znajdowały się w zbiorze skryptów znajdujących się w katalogu „/etc/init/d”. W dystrybucjach niesystemowych nadal tak jest.
W świecie systemd usługi są uruchamiane przez systemd
, który jest teraz pierwszym uruchamianym procesem. Szczegóły usług są przechowywane w plikach jednostek znajdujących się w katalogu „/usr/lib/systemd”.
Według strony systemd
jest menedżerem systemu i usług. Za pomocą komendy systemctl
można sprawdzać i kontrolować różne aspekty systemu systemd, w tym usługi i demony.
Ponieważ patrzymy tutaj na polecenia specyficzne dla systemd, pierwszą rzeczą, którą musisz wiedzieć, jest to, czy korzystasz z dystrybucji opartej na systemd, czy nie.
POWIĄZANE: Dlaczego systemd Linuksa nadal dzieli po tych wszystkich latach
init Czy systemd Based?
Ogromna większość dystrybucji Linuksa korzysta z systemd, w tym Arch, Red Hat i Debian, a także wiele dystrybucji od nich wywodzących się. Obejmuje to rodzinę dystrybucji Ubuntu, Fedorę i jej spiny oraz Manjaro i inne dystrybucje oparte na Arch.
Istnieją jednak rozwidlenia lub smaki niektórych z tych dystrybucji, które zostały stworzone specjalnie po to, aby uniknąć konieczności korzystania z systemd. Nie tylko to, ale są też inne systemy init, które ktoś mógłby wybrać zamiast tego, który był domyślnie dostępny w ich dystrybucji, takich jak runit lub s6-linux-init.
Jeśli musisz administrować komputerem z Linuksem, którego sam nie skonfigurowałeś, jedynym sposobem na upewnienie się, czy używa on systemd, czy nie, jest sprawdzenie. Możemy to zrobić, patrząc na drzewo procesów za pomocą polecenia pstree
. Musimy tylko zobaczyć sam wierzchołek drzewa — w końcu szukamy pierwszego uruchomionego procesu — więc prześlemy dane wyjściowe przez polecenie head
i poprosimy o pierwsze pięć wpisów.
pstree | głowa -5
Widzimy, że systemd
jest pierwszym procesem uruchamianym po starcie, więc zdecydowanie jesteśmy na instalacji Linuksa opartej na systemd.
POWIĄZANE: Jak zarządzać procesami z terminala Linux: 10 poleceń, które musisz znać
Używanie systemctl do wyświetlania usług
Poleceniem wyświetlającym usługi i demony jest systemctl
. Możemy udoskonalić polecenie systemctl
za pomocą opcji type
i state
. Prosimy systemctl
o raportowanie o usługach, które są uruchomione.
systemctl --type=usługa --stan=działa
Generowana jest tabela informacji. Jeśli jest zbyt szeroki lub zbyt długi dla okna terminala, jest wyświetlany w domyślnej przeglądarce plików, co prawdopodobnie będzie less
.
Aby zobaczyć prawy koniec tabeli, naciśnij klawisz strzałki w prawo. Aby powrócić do zwykłego widoku, naciśnij klawisz strzałki w lewo.
Naciśnij klawisz Q, aby wyjść z mniej. Wyświetlane kolumny to:
- Jednostka : nazwa usługi lub demona. Kolumna nosi tytuł „Jednostka”, ponieważ wszystko, co jest w tej kolumnie, zostało uruchomione przy użyciu systemu informacji
systemd
w pliku jednostki. - Load : stan ładowania usługi lub demona. Może być załadowany, nie znaleziony, źle ustawiony, błędny lub zamaskowany.
- Aktywny : ogólny stan, w którym znajduje się usługa lub demon. Może być aktywny, przeładowywany, nieaktywny, uszkodzony, aktywujący lub dezaktywujący.
- SUB : Stan podrzędny usługi lub demona. Może być martwy, zakończony, uszkodzony, nieaktywny lub uruchomiony.
- Opis : Krótki opis jednostki.
Możemy przesłać dane wyjściowe z systemctl
przez grep
, jeśli chcemy skoncentrować się na jednej usłudze. To polecenie izoluje wpis tabeli dla usługi ssh
.
systemctl --type=service --state=running | grep ssh
Do tej pory filtrowaliśmy zawartość tabeli, udostępniając opcję state=running
. Zamiast tego możemy użyć dowolnej z możliwych wartości podstanu: martwy, zakończony, nieudany, nieaktywny lub uruchomiony.
Poszukajmy nieudanych usług:
systemctl --type=usługa --stan=niepowodzenie
Można stosować kombinacje podstanów. Wpisz je jako listę rozdzielaną przecinkami. Upewnij się, że między opcjami nie ma spacji. Zauważ, że to powoduje znalezienie usług, które pasują do jednego ze stanów.
systemctl --type=usługa --stan=niepowodzenie,zakończono
Naciśnięcie klawisza strzałki w prawo, aby spojrzeć na kolumny poza ekranem, pokazuje, że mamy na liście mieszankę usług zakończonych i nieudanych.
Domyślnie systemctl
wyświetla procesy — usługi i demony — które zostały uruchomione przez systemd
, ponieważ systemd
znalazł plik jednostki, który zawierał prawidłowy dla nich plik jednostki. Dlatego skrótowym określeniem wszystkich tych procesów są „jednostki”.
Istnieje możliwość jawnego żądania systemctl
, aby wyświetlić jednostki, ale ponieważ jest to akcja domyślna, nie jest często używana.
Te polecenia dają takie same wyniki.
sudo systemctl list-units --type=service --state=running
sudo systemctl --type=usługa --stan=działa
Używanie systemctl do wyświetlania plików jednostek
Możemy rozszerzyć zakres polecenia systemctl
, dołączając opcję list-unit-files
. Nie tylko informuje o uruchomionych usługach i demonach, ale także wyświetla listę wszystkich plików jednostek zainstalowanych na twoim komputerze.
systemctl list-unit-files --state=enabled
Wyświetlana jest kolorowa tabela.
Usunięcie opcji state
usuwa filtrowanie. Dane wyjściowe będą zawierać wszystkie zainstalowane pliki jednostek, niezależnie od ich stanu.
systemctl list-jednostek-files
Dane wyjściowe będą zawierać znacznie więcej wpisów niż wyniki z poprzednich poleceń.
Na naszym komputerze testowym lista wyników jest prawie czterokrotnie dłuższa niż wyniki naszych poprzednich poleceń.
Jeśli chcesz użyć opcji state
, możesz użyć wielu stanów, jak widzieliśmy wcześniej. Obowiązują te same zasady. Podaj opcje jako wartości oddzielone przecinkami i nie dodawaj spacji.
To polecenie wyświetli listę wszystkich plików jednostek, które są wyłączone lub nie można ich uruchomić.
systemctl list-unit-files --state = włączone, nie powiodło się
Wyświetlana jest zmniejszona liczba wyników, przefiltrowana zgodnie z wyborami dokonanymi za pomocą opcji state.
Patrząc na jedną usługę w szczegółach
Jeśli coś o jednej usłudze lub daemonie wzbudza Twoje zainteresowanie i zasługuje na głębszą analizę, możesz przyjrzeć się temu szczegółowo, korzystając z opcji statusu systemctl.
Przyjrzyjmy się demonowi SSH, sshd. Wystarczy użyć opcji status i nazwy usługi lub demona.
systemctl status sshd
Ten kompaktowy wyświetlacz pokazuje:
- Nazwa usługi wraz z krótkim opisem. Kropka oznaczona kolorem pokazuje, czy działa, czy nie. Zielony oznacza, że działa, czerwony oznacza, że nie.
- Co zostało załadowane, w tym ścieżka do pliku jednostki.
- Jak długo to działa.
- Gdzie dokumentacja znajduje się w podręczniku
man
. - Identyfikator procesu działającej instancji.
- Ile jednoczesnych wystąpień tej usługi jest uruchomionych. Zwykle to będzie jeden.
- Ile pamięci jest zużywane.
- Ile czasu procesora zostało zużyte.
- Grupa kontrolna, do której należy usługa.
Wyświetlane są również odpowiednie wpisy z dziennika systemowego. Są to zazwyczaj zdarzenia, takie jak uruchomienie usługi. Mogą to być przydatne informacje, jeśli szukasz usługi lub demona, który nie uruchomił się poprawnie.
POWIĄZANE: Jak używać journalctl do odczytywania dzienników systemu Linux
Systemy autonomiczne
Usługi i demony zapewniają wiele automatycznych działań systemu operacyjnego, więc są niezbędne. Oznacza to, że ich zdrowie też jest ważne.
Uzyskanie widoku na swoje usługi, demony i pliki jednostek jest łatwe i pouczające. Jest to również cenny krok rozwiązywania problemów, jeśli usługa lub demon nie chce się uruchomić.
POWIĄZANE: Jak rozwiązać błąd „Zbyt wiele otwartych plików” w systemie Linux