Jak systemd przetrwa zabójstwo -9?


28

Pomiędzy ostatnimi pytaniami „Dlaczego zabija -9 0” kończy sesję konsoli ”a pytaniami„ Jak wywołać panikę jądra ”, wpadłem pod siodło i wypróbowałem kill -9 1najnowszego laptopa Arch Linux. Zrobiłem to jako identyfikator użytkownika „root”.

W pełni spodziewałem się jakiejś awarii, paniki lub zamknięcia, ale nic się nie wydarzyło. Zrobiłem to kill -9 1ponownie, bez skutku.

Arch-maszyny linuksowe działają teraz systemd, więc: jak systemdprzetrwać zabójstwo -9? Spodziewam się, że w jądrze Linuksa 3.7 znajduje się specjalny kod sprawy, ale może istnieje jakiś inny powód, o którym nie myślałem.

Co z innymi rzeczami, które działają z PID 1? initMyślę, że Slackware nadal używa , ale boję się wypróbować go na moim produkcyjnym serwerze Slackware. DD-WRT na moim routerze bezprzewodowym działa / sbin / init jakiegoś rodzaju.

Odpowiedzi:


33

Od man 2 kill:

Jedynymi sygnałami, które można wysłać do ID procesu 1, procesu init, są te, dla których init wyraźnie zainstalował procedury obsługi sygnałów. Ma to na celu zapewnienie, że system nie zostanie przypadkowo wyłączony.

Oznacza to, że możliwe initjest robienie wszystkiego, co się chce po otrzymaniu SIGKILL(w tym wyjściu), ale init systemd nie instaluje dla niego żadnej procedury obsługi sygnałów, więc nic się nie dzieje.


4
Dzięki, że to zauważyłeś. Czy ten Linux jest specyficzny? Wydaje mi się, że pamiętam, jak zawiesiłem stację roboczą SunOS na początku lat 90., zabijając init przez pomyłkę. Albo nie. W młodości byłem o wiele bardziej lekkomyślny.
Bruce Ediger

1
@BruceEdiger, ja też chyba pamiętam, że mogłem kill -9 initwywołać panikę jądra. Wygląda na to, że w pewnym momencie się zmieniło.
psusi

2
@BruceEdiger - Wypróbowałem to dla serwera AIX i HP-UX. Oba zwróciły komunikat o błędzie: kill: 1: 0403-068 Sygnał jest nieprawidłowy dla tego procesu LUB kill: 1: Określony proces nie istnieje. Strona podręcznika wspomniała, że ​​zwróci to błąd. Wiele osób mówi mi, że można to zrobić wcześniej - ale nikt nie odniósł sukcesu w ciągu ostatnich 10 lat.
DarkHeart

2
@BruceEdiger Z niektórych poszukiwań wynika, że ​​jest to najnowszy (przynajmniej pod względem długości życia Uniksa) rozwój. Niestety nie byłem żywy na początku lat 90., więc kiedy to się stało, nie mam wiedzy. Byłoby jednak interesujące dowiedzieć się, ponieważ wydaje się, że prawie wszystkie współczesne Unikaty zmieniły się na domyślne dla tego zachowania.
Chris Down,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.