Proces to nic innego jak działający program. Każdy z procesów działających w systemie posiada swój identyfikator liczbowy (z ang. process ID – PID). Uruchamiając polecenie ps dostaniemy wydruk uruchomionych procesów, wygląda mniej więcej tak:
Poszczególne pola mają swoje znaczenie:
PID – identyfikator procesu.
TTY – urządzenie terminala, w którym działa dany proces.
TIME – czas zużyty przez proces. Ogólny czas, jaki proces przeznaczył na wykonanie instrukcji w procesorze.
CMD (COMMAND) – treść polecenia (zawartość tego pola może się zmieniać).
Program ps zawiera wiele różnych opcji, poszczególne z nich można definiować w różnych stylach – Uniks, BSD oraz GNU. Według mnie BSD jest najbardziej komfortowy ponieważ wymaga mniej wypisywania. Najważniejsze parametry programu:
ps -x #wyświetla wszystkie procesy uruchomione przez aktualnego użytkownika. ps -ax #wyświetla wszystkie procesy działające w systemie. ps -u #wyświetla szczegółowe dane o procesach. ps -w #podaje pełne nazwy poleceń, nie ograniczając się do pojedynczego wiersza.
Przerywanie działania procesów.
Możliwe jest przerwanie procesu przez wywołanie polecenia kill. Sygnał polecenia jest komunikatem wysłanym przez jądro do procesu, w ten sposób prosimy jądro o wysłanie sygnału do wybranego procesu. Najczęstszym wywołaniem polecenia jest:
kill pid
Domyślnym sygnałem kill jest TERM, nakazującym procesowi zakończenie działania. Można dodać specjalne opcje do procesu i wysłać inne różne sygnały. Przykładowo nie chcemy zakończyć a jedynie zamrozić/zatrzymać proces, wtedy uruchomimy go z sygnałem STOP:
kill -STOP pid
Proces taki nadal przechowywany jest w pamięci gotowy do wznowienia jego działania od miejsca, w którym został zatrzymany. Aby go wznowić użyjemy opcji CONT:
kill -CONT pid
Naciśnięcie klawisza Ctrl+C kończy działanie procesu działającego w aktualnym terminalu. Dokładnie takie samo ma wywołanie polecenia kill z parametrem sygnału INIT (ang. interrupt – przerwanie).
Najbrutalniejszym sposobem jest wywołanie sygnału KILL. Inne sygnały są mniej brutalne i dają po sobie posprzątać, ale nie sygnał KILL. Powoduje natychmiastowe zakończenie procesu przez system i usunięcie go z pamięci siłą, dlatego należy używać go w ostateczności. Nie należy przerywać działania dowolnie wybranego procesu, tym bardziej gdy nie wiemy za co jest odpowiedzialny, takie działanie to jak strzał w stopę.
Podsumowanie:
Jeśli jesteśmy w stanie krytycznym i zdarzy się sytuacja że komputer przestanie odpowiadać na sygnały z klawiatury i myszki ale znamy proces, który jest tego winny możemy przejść do innej powłoki bash(tty) za pomocą klawiszy:
Ctrl+Alt+KLAWISZ_FUNKCYJNY #np. Ctrl+Alt+F2 (najcześciej F7 to powłoka graficzna, na której pracujesz w chwili obecnej)
Wyszukujemy nasz proces, poprzez wywołanie wcześniej nauczonego polecenia i odnajdujemy jego ID-PID:
ps -ax #wyświetla wszystkie procesy działające w systemie.
Gdy już znamy ID-PID procesu będącego przyczyną zawieszenia się naszego komputera, musimy go wyłączyć, w tym celu posłuży nam polecenie kill:
kill pid
W sytuacji gdy znamy nazwę programu ale nie znamy jego ID-PID, można wykonać polecenie killall z sygnałem -9:
killall nazwa_programu -9
W tym momencie możemy wrócić do naszej powłoki graficznej (najczęściej znajduje się pod F7).
Jeśli zdarzy się sytuacja, iż nie znamy procesu odpowiedzialnego za zawieszenie się, możemy w ostateczności użyć polecenia kill z sygnałem KILL, aby nie restartować komputera:
kill KILL
Zawartość tego artykułu jest tylko poglądowa i zawiera najważniejsze polecenia dla początkujących. Jeśli chcesz dowiedzieć się więcej o tych programach zachęcam do zapoznania się z manualem.
Super. Zdarzało mi się korzystać z funkcji zakończenia procesu z pozycji monitora systemu ale nie wiedziałem, że jest możliwość wyłączenia procesu w inny sposób z pozycji (alt+ctrl+F2).
„Człowiek się całe życie uczy i głupim umiera”
Bardzo przydatne i pouczające.