Co to jest sygnały zabijania Linux?
Sygnały zabijania umożliwiają interakcję między różnymi procesami. Konieczne sygnały to powiadomienia o zdarzeniach wysyłane do procesów głównie w celu przerwania, zakończenia, zabijania lub zawieszenia procesów (dlatego używamy terminu „zabójstwo”). Sygnały mogą być wysyłane przez procesy lub jądro, i zwykle są wysyłane, gdy anomalia lub stan wyjątkowy wymaga specjalnego przetwarzania lub gdy użytkownik przerywa lub kończy proces ręcznie (e.G., Podczas naciśnięcia Ctrl+C),
Gdy sygnał jest wysyłany do procesu, ten sygnał lub powiadomienie może spełnić akcję domyślną jako odpowiedź lub może być obsługiwane przez obsługę sygnału. Prowadzący sygnał to niestandardowy kod programu, którego proces otrzymał sygnał, który określa zachowanie procesu po odbieraniu sygnału (z wyjątkiem sygnałów Sigkill i Sigstop, których nie można obsłużyć, ignorować, ani zablokować).
Po wysłaniu sygnału domyślne działania, które mogą mieć miejsce, są następujące:
W zależności od sygnału, niektóre z tych działań mogą nastąpić, program może również zawierać obsługę sygnału do wykonania właściwego działania.
Podsumowane: Sygnały to wiadomości dostarczane w celu powiadomienia ich o zdarzeniu.
Dostępne sygnały:
Aby wymienić wszystkie nazwy i liczby sygnałów w systemie, możesz użyć polecenia Kill, a następnie flaga -L, jak pokazano poniżej.
Zabij -l
Jak widać, istnieje 64 sygnały, prawdopodobnie najbardziej znanym przez nas wszystkich jest numer 9 (Sigkill) używany do zakończenia procesów, w tym procesów dziecięcych, natychmiast.
Jak używać sygnałów zabijania:
Prawidłowa składnia do wysyłania sygnałów to:
zabić <-SignalName>
Lub
zabić <-SignalNumber>
Możesz zastąpić IR nazwiskami lub liczbami, które otrzymaliśmy wcześniej podczas uruchamiania polecenia Kill -l. PID to identyfikator procesu, którego możesz się nauczyć, używając polecenia PS, jak pokazano w następujących instrukcjach.
Aby rozpocząć praktyczną sekcję tego samouczka, spróbujmy sigstop i sigcont, aby zatrzymać proces, a następnie wznowić.
W pierwszym przykładzie stworzyłem mały kod LinuxhintSignal, który nieustannie drukuje „Linuxhint.com”Jak pokazano na zrzucie ekranu poniżej.
Wysłać sygnał do procesu, zanim będę musiał nauczyć się jego PID. Aby zobaczyć identyfikator procesu (PID), musisz uruchomić Ps Komenda. W moim przypadku jestem tym, który wykonał proces, więc używam Ps polecenie, a następnie -u flaga, aby pokazać tylko moje procesy.
Notatka: Aby uzyskać więcej instrukcji na polecenie PS, przeczytaj za pomocą polecenia PS w Linux.
Jak widać, PID biegu Linuxhintsignal Skrypt to 16182.
Poniższy zrzut ekranu pokazuje dwa terminale; Prawy terminal pokazuje dostarczenie sygnału SIGSTOP do procesu 16182. Lewy terminal pokazuje, w jaki sposób proces jest zatrzymany po wysyłaniu sygnału.
KILL -SIGSTOP
Jak widać na właściwym terminalu, proces został poprawnie zatrzymany.
Musisz wysłać sygnał SigCont, aby wznowić wykonanie procesu, jak pokazano na zrzutach ekranów poniżej.
Kill -Sigcont
Jak widać, proces wznowiony.
Możesz osiągnąć ten sam wynik, zastępując nazwy sygnałów dla ich liczb. Poniższy przykład powtarza poprzedni scenariusz, ale tym razem definiuje sygnały według ich liczb.
Poniższy przykład pokazuje również, w jaki sposób Sigkill jest dostarczany do procesu 17721, aby go zatrzymać. Tym razem zamiast określać nazwę sygnału, określam numer sygnału zwrócony przez Zabij -l polecenie, w tym przypadku 19 dla sygnału sigstop.
Zabij -19
Poniższy zrzut ekranu pokazuje, jak określić sygnał SigCont, również używając jego numeru zamiast nazwy.
Zabij -18
Jak widać, wynik jest taki sam podczas używania nazwy lub numeru sygnału.
Jak wspomniano wcześniej, sygnał Sigkill służy do pełnego zakończenia procesu; jest to prawdopodobnie najczęściej używany sygnał przez użytkowników.
Jak widać w poniższym przykładzie, w którym Sigkill jest zaimplementowany z jego liczbą (9), skrypt został w pełni zakończony lub zabity.
Zabij -9
Inne ważne sygnały:
Wniosek:
Używanie sygnałów Linux do zabijania, zatrzymania, zatrzymania procesów, między innymi, jest podstawową wiedzą, który musi przechowywać każdy użytkownik Linux. Głęboka znajomość sygnałów jest szczególnie istotna dla programistów, którzy muszą upewnić się, że obsługi sygnałów nie tworzą niechcianych wpływów na system. Jak widać, istnieją dziesiątki dostępnych sygnałów; Ten samouczek skupił się tylko na najczęstszych. Więcej informacji na temat sygnałów Linux na stronie https: // www.gnu antylopa.org/software/libc/manual/html_node/standard-signals.html.
Dziękujemy za przeczytanie wskazówki Linuksa; Śledź nas, aby uzyskać więcej wskazówek i samouczków Linux.