Co to jest polecenie zabicia?
Linux to zaawansowany i świetny system operacyjny; jednak nie jest idealnie. Niektóre aplikacje mogą zacząć zachowywać się nieostrożnie i stać się niewrażliwe lub zacząć zużywać kilka zasobów systemowych.
Niewrażliwych aplikacji nie można ponownie uruchomić, ponieważ rzeczywisty proces aplikacji nigdy nie zostaje całkowicie zatrzymany. Jedynym rozwiązaniem jest ponowne uruchomienie systemu lub zakończenie procesu aplikacji.
Istnieją różne narzędzia, które pozwalają nam zakończyć błędne procesy wraz z zabić Komenda. To polecenie jest najczęściej używane w systemie Linux.
W Linuksa , polecenie kill (znajdujące się w /bin/kill) można zdefiniować jako polecenie wbudowane.
Służy do ręcznego kończenia procesów. Zachowanie polecenia kill jest nieco inne w przypadku powłok i /bin/zabij samodzielny plik wykonywalny.
Możemy zastosować polecenie type, aby wyświetlić każdą lokalizację w naszym systemie zawierającą opcję kill:
$ type -a kill
Komenda kill przekazuje sygnał do procesu, w którym proces zostaje dodatkowo zakończony. Jeśli użytkownik nie określi żadnego sygnału, który ma zostać przesłany za pomocą polecenia kill, wówczas TERMIN przesyłany jest sygnał (domyślny), który zakończy proces. Jeśli sygnał nie jest opisany, domyślnie będzie to -piętnaście ( -TERMIN ).
Najszerzej stosowane sygnały to:
Możemy użyć polecenia kill wraz z -l opcja uzyskania listy wszystkich dostępnych sygnałów:
$ kill -l
Sygnały te można opisać na trzy różne sposoby. Te sposoby są wymienione poniżej:
- Według liczby (np. -6)
- Bez przedrostka SIG (np. -kill)
- Z przedrostkiem SIG (np. -SIGkill)
Poniższe polecenia są do siebie podobne:
- $ zabij -SIGHUP PID_NUMBER
- $ zabij -HUP PID_NUMBER
- $ zabij -1 PID_NUMBER
Identyfikatory PID przydzielone poleceniu kill mogą być dowolnymi z poniższych:
- Sygnał zostanie przekazany do procesu wraz z identyfikatorem podobnym do PID, gdy PID będzie większy od zera.
- Sygnał zostanie przesłany do każdego procesu w bieżącej grupie procesów, gdy PID będzie równy zero. Oznacza to, że sygnał zostanie przesłany do każdego procesu powiązanego z identyfikatorem Shell GID, który zażąda polecenia zabicia. Możemy zastosować ps -efj polecenie umożliwiające przeglądanie identyfikatorów grupy procesów (GID).
- Sygnał zostanie przekazany do każdego procesu wraz z podobnym UID jak użytkownik żądający polecenia, gdy PID jest równy -1. Jeśli żądającym użytkownikiem jest root, sygnał zostanie przesłany do każdego procesu z wyjątkiem procesów kill i init.
- Sygnał zostanie przekazany do każdego procesu w grupie procesów wraz z GID podobnym do wartości bezwzględnej PID, gdy PID jest mniejszy niż -1.
Zwykli użytkownicy mają możliwość przesyłania sygnałów do swoich procesów. Nie obejmuje to jednak użytkowników powiązanych z jakimkolwiek innym użytkownikiem. Z drugiej strony użytkownik root może przekazać sygnał do procesów innego użytkownika.
- PID -1 jest bardzo unikalny, ponieważ wskazuje każdy proces z wyjątkiem init i kill, który jest procesem nadrzędnym każdego procesu w systemie.
- Ujemne wartości PID służą do wskazania identyfikatora grupy procesów. Kiedy przekażemy dowolny identyfikator grupy procesów, każdy proces w tej grupie otrzyma sygnał.
- Aby wyświetlić listę uruchomionych procesów, możemy użyć polecenia ps, które pokaże nam uruchomione procesy wraz z numerem PID. Musimy podać PID, aby określić, który proces powinien otrzymać sygnał polecenia kill.
Składnia:
$ps
ps do: To polecenie służy do wyświetlania każdego uruchomionego procesu wraz z jego identyfikatorami PID i innymi szczegółami. W przypadku, gdy nie znamy identyfikatora procesu, możemy skorzystać z tego polecenia.
Opcje polecenia kill
1. zabij -l: Opcja ta służy do wyświetlenia każdego istniejącego sygnału, możemy zastosować następującą opcję polecenia:
Składnia:
$kill -l
2. zabij pid: Ta opcja służy do pokazania, jak zastosować PID wraz z poleceniem kill.
Składnia:
$kill pid
3. zabij -L: Komendy kill -L można użyć do wylistowania istniejących sygnałów w formie tabeli.
Składnia:
/bin/kill -L
4. Przetłumacz numer sygnału: Możemy łatwo przetłumaczyć dowolny numer sygnału na nazwę sygnału, używając następującego polecenia:
/bin/kill --list=12