Powody, dla których zabij może nie działać w Linux, jak to rozwiązać?

Powody, dla których zabij może nie działać w Linux, jak to rozwiązać?

Wszyscy w pewnym momencie doświadczyliśmy programu zamrażania i nie odpowiadania. W takich przypadkach zakończenie programu i ponowne uruchomienie jest prostym i wydajnym rozwiązaniem. W tym artykule pokażemy, w jaki sposób możesz zakończyć procesy niereagujące za pomocą polecenia Kill.

Polecenie zabójstwa

Jak wspomniano wcześniej, kiedy program przestaje odpowiadać i nie możesz go ponownie uruchomić, potrzebujesz nowego rozwiązania. W tym momencie użytkownicy systemu Windows otworzą menedżera zadań, aby pozbyć się procesu zamrożonego. W Linux nie ma wbudowanego menedżera zadań, ale istnieje polecenie, których możemy użyć do osiągnięcia tego samego efektu, co funkcja zadania końcowego w systemie Windows. To polecenie jest znane jako komenda zabójstwa i możemy je używać na wiele sposobów, aby nam pomóc i systemowi pozbycia się skorumpowanych instancji.

Zabij składnię

Składnia polecenia zabójstwa jest prosta.

$ zabójcy - [sygnał] pid

Tutaj dwie rzeczy wymagają wyjaśnienia - mianowicie sygnał i pid. Spójrzmy zarówno na jeden po drugim i dowiedz się, w jaki sposób przyczyniają się do funkcjonalności tego polecenia.

Parametr sygnału

Pierwszy to sygnał. Sygnały to proste cyfry reprezentujące nazwę. Polecenie zabójstwa może wykonywać różne zadania w zależności od dostarczonego sygnału. Użytkownicy mogą używać więcej niż 60 różnych wartości dla sygnałów, z których wszystkie wykonują osobne, określone zadania. Aby wyświetlić wszystkie te opcje, możesz użyć następującego polecenia:

$ Kill -l

Kiedy używasz tego polecenia w terminalu poleceń Ubuntu, otrzymujesz to na ekranie:

Jak widać, istnieje w sumie 64 opcje, z których można wybrać.

Chociaż istnieje ponad 60 różnych sygnałów, dwa z najczęstszych opisano poniżej.

  1. Sigkill (9): Jak sama nazwa wskazuje, to polecenie to całkowicie zabija proces bez zapisywania danych programu. To polecenie ma być używane tylko jako ostateczność.
  2. Sigterm (15): To generuje sygnał zakończenia, który zamyka program w sposób bezpieczeństwa. Jest to również domyślny sygnał.

Sygnały można dalej określić na 3 różne sposoby opisane poniżej.

1. Możemy określić sygnał za pomocą odpowiedniej cyfry:

$ zabójcy -9 pid

2. Możemy określić sygnał o jego nazwie:

$ Kill -Sigkill Pid

3. Możemy określić sygnał bez SIG w nazwie.

$ Kill -Kill Pid

Wszystkie te polecenia wykonują to samo zadanie.

Parametr PID

PID to numer identyfikacji procesu. W systemach Linux i Unix podobnych do systemu przeprowadzonego przez system otrzymuje numer identyfikacyjny procesu (zwany PID dalej). Aby zabić proces, trzeba znać jego pid. Aby znaleźć PID dla danego procesu, możemy użyć następujących poleceń.

$ pidof [nazwa procesu]
$ pGrep [nazwa procesu]

Kiedy używasz tych dwóch poleceń w terminalu poleceń Ubuntu, otrzymasz następujący wynik.

Korzystanie z polecenia zabójstwa

Teraz, gdy zrozumiałeś składnię, możemy wykonać polecenie zabójstwa. Ze względu na przykład będziemy korzystać z zabójstwa w Thunderbird Mail - wstępnie zainstalowany program w Ubuntu. Najpierw zidentyfikujemy jego PID, a następnie zakończymy proces przy użyciu sygnału SIGTERM.

Najpierw otwórz terminal poleceń dla Ubuntu. Po zakończeniu uruchom następujące polecenie:

$ pgrep Thunderbird

Powinieneś uzyskać wyjście podobne do tego, który otrzymaliśmy na poniższym obrazku:

Jak teraz wiesz, PID poczty Thunderbird uruchamia następujące polecenie, aby zakończyć proces.

$ Kill -Sigterm 7075

Lub

$ Kill -15 7075

Po naciśnięciu Enter zauważysz, że proces i jego okno już nie istnieją. Możesz także zakończyć wiele procesów razem, jednocześnie wchodząc do PIDS procesów.

$ zabójcy -[sygnał] PID1 PID2… PIDN

Ponadto użytkownicy mogą zakończyć proces, używając zarówno poleceń Kill i Pidof/PGREP w tym samym wierszu. Składnia takiego układu jest:

$ zabójcy -[sygnał] $ pGrep [nazwa procesu]

Powody, dla których zabij może nie działać

Jak wspomniano wcześniej, domyślnym sygnałem wysłanym za pomocą polecenia zabójstwa jest Sigterm. Sigterm zasadniczo powiadomi proces, że powinien się oczyścić i zostać zakończone. To jest „ładny” sposób zakończenia lub zabicia procesu. Jednak w przypadku niektórych procesów możliwe jest, że miły sposób go nie przecięła.

Jeśli zauważysz, że proces, który nakazałeś zakończyć, jest nadal uruchomiony po użyciu sygnału Sigterm, nie martw się, ponieważ jest to powszechna komplikacja, która występuje podczas używania zabójstwa. Jak powiedzieliśmy, może się to czasem zdarzyć i z pewnymi procesami.

Aby pozbyć się tego problemu, możesz użyć sygnału Sigkill, aby całkowicie zakończyć proces. Sygnał Sigkill umożliwia systemowi wzięcie spraw w własne ręce. Tak więc, jeśli spełnisz tak lepką sytuację, zawsze możesz z niej wyjść za pomocą sygnału Sigkill lub -9.

Ważne jest, abyś używał Sigkill oszczędnie, a gdy zostanie przedstawiony z sytuacją, której Sigterm nie może rozwiązać. Sigterm pozostaje domyślny i najbezpieczniejszy; Stąd najlepszy sposób na zakończenie procesu.

Polecenie Killall

Komenda Kill jest natywna zarówno dla systemów operacyjnych Linux, jak i innych systemów operacyjnych opartych na Unix, ale polecenie Killall jest przeznaczone tylko dla użytkowników Linux. To polecenie umożliwia użytkownikowi zakończenie procesu za pomocą nazwy procesu. Nie ma potrzeby znajdowania PID procesu. Składnia polecenia Killall to:

$ Killall -[sygnał] [Nazwa procesu]

To polecenie może służyć jako fajna alternatywa, jeśli z jakiegoś powodu zabójstwo nie działa dla Ciebie nawet po przepisanych rozwiązaniach.

Wniosek

W tym artykule dowiedział się o poleceniu zabójcy, jego celu, składni, parametrach i użytkowaniu. Ponadto widzieliśmy, co może spowodować, że polecenie zabicia nie funkcjonuje prawidłowo i naprawi te problemy. Mamy nadzieję, że był to dla ciebie pouczający i interesujący odczyt i rozwiązaliśmy wszelkie problemy, które miałeś z tym poleceniem.