Z mojego pytania było jasne, że nie mogę łatwo zdecydować o funkcjach demona. Przeczytałem w różnych artykułach i na różnych forach, za pomocą tego service --status-all
polecenia można wyświetlić listę wszystkich demonów w moim systemie. Ale nie sądzę, że polecenie wyświetla listę wszystkich demonów, ponieważ NetworkManager
demon, który jest obecnie uruchomiony w moim Ubuntu 14.04
systemie, nie jest wymieniony przez polecenie. Czy jest jakieś polecenie, aby wyświetlić listę uruchomionych demonów, czy też jest jakiś sposób, aby znaleźć demony od filesystem
siebie?
32
network-manager
nieNetworkManager
.anacron
która w skrypcie inicjującym nie jest demonem.anacron
ponieważ powiedziano,/etc/init.d/anacron
że nie jest to demon. Moim celem jest napisanieC++
programu zawierającego listę wszystkich demonów działających w moim systemie. W tym celu muszę wiedzieć, które pliki przeanalizować, aby uzyskać szczegółowe informacje.service --status-all
potrzebujesz tego. Ubuntu wydaje się traktować NetworkManager inaczej. Mam obanetworking
inetwork-manager
po wyjściuservices --status-all
na Debianie, ale tylkonetworking
na Ubuntu. Myślę, że musisz zdefiniować, co dokładnie rozumiesz przez „demona”.Odpowiedzi:
Pojęcie demona jest dołączone do procesów , a nie plików . Z tego powodu nie ma sensu „znajdowanie demonów w systemie plików”. Po prostu, aby pojęcie było nieco jaśniejsze: program jest plikiem wykonywalnym (widocznym na wyjściu
ls
); proces jest instancją tego programu (widoczną na wyjściups
).Teraz, jeśli wykorzystamy informacje, które podałem w mojej odpowiedzi , moglibyśmy znaleźć uruchomione demony, wyszukując procesy, które działają bez podłączonego do nich terminala sterującego . Można to zrobić dość łatwo za pomocą
ps
:Pole
tty
wyjściowe zawiera „?” gdy proces nie ma terminala sterującego.Duży problem pojawia się, gdy system działa w środowisku graficznym. Ponieważ programy GUI (tj. Chromium) nie są podłączone do terminala, pojawiają się również na wyjściu. W standardowym systemie, w którym root nie uruchamia programów graficznych, możesz po prostu ograniczyć poprzednią listę do procesów roota. Można to osiągnąć za pomocą
ps
"-U
przełącznika.Jednak pojawiają się tutaj dwa problemy:
Zasadniczo chcielibyśmy wyświetlać wszystkie programy bez terminala sterującego, ale nie programy GUI . Na szczęście dla nas, istnieje program do procesów lista GUI:
xlsclients
! Ta odpowiedź od slm mówi nam, jak używać jej do wyświetlania listy wszystkich programów GUI, ale będziemy musieli ją cofnąć, ponieważ chcemy je wykluczyć. Można to zrobić za pomocą--deselect
przełącznika.Najpierw zbudujemy listę wszystkich programów GUI, dla których mamy uruchomione procesy. Z odpowiedzi, którą właśnie podłączyłem, odbywa się to za pomocą ...
Teraz
ps
ma-C
przełącznik, który pozwala nam wybierać według nazwy polecenia. Właśnie dostaliśmy naszą listę poleceń, więc wstawmy ją dops
linii poleceń. Zauważ, że--deselect
później używam do cofnięcia wyboru.Teraz mamy listę wszystkich procesów niezwiązanych z GUI. Nie zapominajmy o naszej zasadzie „bez dołączenia TTY”. W tym
-o tty,args
celu dodam do poprzedniego wiersza, aby wyświetlić dane wyjściowetty
każdego procesu (i jego pełnego wiersza poleceń):Finał
grep
przechwytuje wszystkie linie zaczynające się od „?”, To znaczy wszystkie procesy bez kontrolnego tty. I proszę bardzo! Ten ostatni wiersz zawiera wszystkie procesy inne niż GUI uruchomione bez terminala sterującego. Pamiętaj, że nadal możesz to ulepszyć, na przykład, wykluczając wątki jądra (które nie są procesami) ...... lub dodając kilka kolumn informacji do przeczytania:
źródło
Napisałem dla „old” sysv initd, musisz sprawdzić, czy działa on na twojej dystrybucji.
Dobre demony mają dobrze napisane skrypty startowe w / etc / initd
Kiedy zmieniając poziom działania, w jaki sposób init zna uruchomione demony?
Poszukuje ich nazw w katalogu
Więc możesz
Aby przeskanować wszystkie procesy: wyświetl listę wszystkich podkatalogów w
Jeśli jego nazwa to cyfry, jest to pid uruchomionego procesu.
Na przykład stanem procesu z pid 1234 jest ten plik
Otwórz i uzyskaj pierwszy wiersz, zaczyna się od „Nazwa:”
Widzieć
(przepraszam za nieprzyjemne formatowanie, piszę z telefonu komórkowego ...)
źródło