Szukam sposobu na uzyskanie listy wszystkich usług (/etc/init.d lub upstart lub systemd), które powinny uruchamiać się (lub były uruchamiane).
Jak uzyskać listę wszystkich usług początkowych? - Znam to pytanie i sugeruje użycie service --status-all
.
Ale to nie pokazuje mi, które usługi mają być uruchomione . Wywołuje wszystkie skrypty inicjujące z status
argumentem „ ”. To jest lista wszystkich usług, które mogą być uruchomione.
Chciałbym jednak wiedzieć, czy usługa uruchomiona podczas rozruchu nadal działa.
Przykład…
Mam zainstalowany system webfs. Ale nie chcę, żeby działał przy starcie systemu. Tak więc wyłączył go: sudo update-rc.d webfs disable
. Mam również zainstalowaną sambę, która powinna być uruchomiona podczas rozruchu. Ale to jest zatrzymane (z jakiegokolwiek powodu). sudo service --status-all
nie pomaga mi tutaj:
$ sudo service --status-all 2>/dev/null | grep -E 'samba$|webfs'
[ - ] samba
[ - ] webfs
Oba są wyłączone, ale nie mam pojęcia, że jedna (samba) powinna być włączona.
Więc…
Jak mogę uzyskać listę wszystkich usług rozpoczynających się przy starcie systemu? I, jako rozszerzenie, jest łatwy sposób, aby uzyskać „status” tych usług (jeśli nie, po prostu przejdę do tej listy i uruchomię „service $ status usługi” lub coś w tym rodzaju).
Dzięki, Alexander
Edytuj 2015-05-04: Jestem na Ubuntu 14.04.
Głównym celem tego pytania jest:
Chciałbym jednak wiedzieć, czy usługa uruchomiona podczas rozruchu nadal działa.
Z tego powodu initctl list
niewiele pomaga. Tak naprawdę nie bierze pod uwagę usług uruchamianych przez /etc/init.d
skrypty (w porównaniu do skryptów upstart w /etc/init
).
Również lista /etc/rc?.d/S*
nie pomaga. Wygeneruje listę usług, które mogły zostać uruchomione na danym poziomie działania. Nie pokazuje mi, czy usługa, która powinna była zostać uruchomiona, nadal działa.
Zasadniczo szukam czegoś takiego jak svcs -x
Solaris dla Ubuntu. Dzięki svcs -x
miałbym dane wyjściowe, jeśli uruchomiona usługa już nie działa. Tego też potrzebowałbym dla Ubuntu.
Powód: Chciałbym mieć (mniej więcej ...) ogólne sprawdzenie naszego systemu monitorowania Icinga / Nagios, co ostrzegłoby mnie, jeśli usługa już nie działa, która powinna być uruchomiona. Ponieważ mamy wiele różnych serwerów dla wielu różnych klientów, tak naprawdę nie ma możliwości zdefiniowania listy „ważnych” usług.
źródło
initctl list
które listy procesów, które są uruchomione / uruchomione, ale ta lista obejmuje również procesy, które są uruchamiane ręcznieinitctl list
. Ale to tak naprawdę na to nie odpowiada, ponieważ pokazywałoby także ręcznie uruchamiane usługi. I nie pokazuje usług, które nie są uruchomione.Odpowiedzi:
Wszystkie usługi zaczynają się przy uruchomieniu:
Lista wszystkich usług istniejących w systemie:
źródło
Oto mój oneliner
grep -i 'runlevel' /etc/init/* | awk '!/#/ && /start on/ && /2/ {gsub("/"," "); print $0 }' | cut -d ' ' -f4-
Za pomocą można uzyskać nieco czystszą wydajność
grep -i 'runlevel' /etc/init/* | awk '/start on/ && /2/ {gsub("/"," "); gsub(":", " ");gsub(".conf"," "); print $3 }'
Teraz przejdźmy do szczegółów. Wszystkie zadania upstartu są przechowywane
/etc/init/
, prawda? Wszystkie zadania tam mają linie określające, na którym poziomie uruchamiania zaczynają. Runlevel 2 to normalny rozruch, domyślny poziom uruchamiania. Jeśli więc grepujemy wszystkie wiersze, które mówiąrunlevel
i czyszczą wyjście grep za pomocą awk, aby dopasować tylko liniestart on
zi runlevel # 2, otrzymamy listę zadań upstart. Reszta służy tylko do formułowania potrzeb, zamiany / wstawiania nazw plików na spacje i odcinania ścieżek do tych plików, pozostawiając same nazwy plików.!/#/
Część jest adres ewentualnie zakomentowanym dyrektyw startowych, które ja osobiście dodawanych ręcznie.Między innymi tam
/etc/rc2.d
(o ile dobrze rozumiem) masz skrypty o mniejszym priorytecie.Surowy jednowarstwowy do tego jest:
ls /etc/rc2.d/* | grep S | awk '{sub("S"," "); print $2}
Skrypty znajdujące się w tym folderze, które faktycznie działają na poziomie 2, zaczynają się od S, po której następuje numer priorytetu. Teraz, w zasadzie, otrzymujemy wszystkie pliki zaczynające się na literę S, i po prostu wymieniamy je tylko z priorytetową nazwą (wciąż musimy wymyślić, jak to wyczyścić).
Jak muru słusznie zauważyło w komentarzach, istnieją również
/etc/init/*.override
pliki, które mogą „.. Modyfikować sposób uruchamiania zadania bez konieczności bezpośredniej modyfikacji pliku konfiguracyjnego” (strona man init )W tej chwili, ponieważ nie mam dużego doświadczenia z tymi plikami, mogę tylko zasugerować przejrzenie tych plików .override, używając instrukcji „grep” /etc/init/*.override, aby wyświetlić listę usług, o których mówiono, że mają zostać uruchomione ręcznie za pomocą
initctl
lubservices
poleceń.źródło
.override
plików.Wyświetl wszystkie usługi i odpowiedni status poziomu uruchamiania - styl chkconfig:
Interaktywna edycja tekstowa wszystkich wymienionych:
Może go zainstalować, jeśli go nie ma:
źródło