Are you a developer? Try out the
PROCESY
Każda uruchomiona aplikacja tworzy w systemie odrębny proces, który zarządza pamięcią,
procesorem i zasobami wejścia i wyjścia, tak aby możliwe było wykonanie tej aplikacji.
System Linuks daje złudzenie równoczesnego wykonywania wielu zadań. W rzeczywistości jeden
procesor może obsłużyć tylko jeden proces. Złudzenie takie jest osiągane dzięki podziałowi czasu, co
oznacza, że system operacyjny przełącza wykonywanie poszczególnych procesów w określonych,
bardzo krótkich odstępach czasu.
Do wyświetlania listy procesów pracujących w systemie służy polecenie ps.
Aby wyświetlić listę wszystkich bieżących procesów należy użyć parametru -A :
ps -A
Do wyświetlenia wszystkich procesów uruchomionych w systemie służą parametry -aux :
ps -aux
Na ekranie system w postaci kolumn wyświetli informacje o wszystkich procesach.
Objaśnienie poszczególnych kolumn jest następujące :
Are you a developer? Try out the
wartość
znaczenie
USER
Identyfikator użytkownika będącego właścicielem procesu
PID
Identyfikator procesu
%CPU
Procentowe zużycie czasu procesora przez proces
%MEM
Procentowe zużycie pamięci przez proces
VSZ
Rzeczywisty rozmiar procesu, w kilobajtach
RSS
Ilość fizycznej pamięci używanej przez proces
TTY
Terminal związany z procesem
STAT
Status procesu; oto niektóre z możliwych wartości:
R - działający (Runnable)
D - oczekujący na dostęp do dysku (Disk wait)
I - nieaktywny przez mniej niż 20 sekund
S - nieaktywny przez więcej niż 20 sekund
T - wstrzymany
Z - Zombie, czyli proces porzucony, który powinien zostać zamknięty przez
inny proces
W - proces przeniesiony czasowo do pliku wymiany
N - wartość parametru Nice, oznaczającego priorytet procesu
START
Czas uruchomienia procesu
TIME
Zużyty czas procesora
COMMAND
Polecenie (wraz z parametrami), które spowodowało uruchomienie procesu
Każdy proces w systemie Linuks może zostać zabity (zamknięty). Jako zwykły użytkownik możesz
Are you a developer? Try out the
zabić tylko te procesy, które są twoja własnością. Wyjątkiem jest super-użytkownik, który może zabić
dowolny proces.
Do zamykania procesów służy polecenie kill lub killall :
kill 123
zabije proces o numerze PID 123
killall -v mozilla
zabije procesy o nazwie
mozilla
Do zabijania procesów pod X Window służy polecenie xkill , wydawane w oknie X-terminala.
Po wydaniu tego polecenia kursor myszy zmienia swój kształt i wówczas można przemieścić go nad
okno programu, który chcemy zabić i nacisnąć lewy przycisk myszy.
Wykorzystując polecenie
kill
możemy do danego procesu wysłać jeden z możliwych sygnałów.
Polecenie
kill 123
jest równoważne z poleceniem
kill -s SIGKILL 123
.
Możliwe sygnały to :
NAZWA
NUMER
AKCJA
KOMENTARZ
SIGHUP
1
A
Wyłączenie terminala kontrolnego albo śmierć
procesu kontrolującego
SIGINT
2
A
Przerwanie z klawiatury (CTRL+C)
SIGQUIT
3
C
Wyjście z klawiatury
SIGILL
4
C
Niepoprawna instrukcja
SIGTRAP
5
C
Pułapka śledzenia procesu
Are you a developer? Try out the
SIGABRT
6
C
Sygnał zakończenia z funkcji abort
SIGBUS
7
C
Błąd magistrali (zły dostęp do pamięci)
SIGFPE
8
C
Błąd zmiennoprzecinkowy
SIGKILL
9
C
Sygnał natychmiastowego zabicia procesu
SIGUSR1
10
AEF
Sygnał użytkownika 1
SIGSEGV
11
A
Niewłaściwe wskazanie do pamięci
SIGUSR2
12
C
Sygnał użytkownika 2
SIGPIPE
13
A
Zerwany potok
SIGALRM
14
A
Sygnał alarmowy z funkcji alarm
SIGTERM
15
A
Sygnał przerwania działania procesu
SIGSTKFLT
16
A
Błąd stosu w koprocesorze
SIGCHLD
17
A
Proces potomny zatrzymany lub wyłączony
SIGCONT
18
B
Kontynuacja przy zatrzymaniu
SIGSTOP
19
DEF
Zatrzymanie procesu
SIGTSTP
20
D
Stop wpisany na terminalu
SIGTTIN
21
D
Proces w tle potrzebuje wejścia z terminala
SIGTTOU
22
D
Proces w tle wyprowadza dane na terminal
SIGURG 23
23
B
Ważne zdarzenie w gnieździe
Domyślna akcja to:
A Zakończenie procesu
Are you a developer? Try out the
B Ignorowanie sygnału
C Zakończenie procesu i zrzucenie rdzenia
D Przerwanie procesu
F Sygnał nie może być złapany
F Sygnał nie może być ignorowany
Niektóre działania związane z procesami możemy wywołać korzystając ze skrótów klawiszowych.
I tak na przykład zatrzymanie bieżącego procesu możemy dokonać kombinacją klawiszy :
[Ctrl]+[z]
, natomiast przerwanie bieżącego procesu kombinacją :
[Ctrl]+[c]
.
Zabicie procesu taką kombinacją klawiszy spowoduje nieuchronne zakończenie działania
programu i utratę wszelkich nie zapisanych danych związanych z tym programem.
Częstym objawem zawieszenia programu lub zabicia jego procesu jest utworzenie pliku
core
w
bieżącym katalogu. Pliki
core
to obrazy pamięci tworzone z myślą o debagerach.
Pliki
core
mają czasami duże rozmiary, dlatego jeśli nie zajmujemy się ich analizą, dobrym
rozwiązaniem jest usunięcie ich z systemu i zablokowanie możliwości ich tworzenia poleceniem :
ulimit -c 0
Jeśli jednak chciałbyś dowiedzieć się z jakiego powodu dany program padł, skorzystaj z polecenia :
gdb -c core
które uruchomi debugger analizujący pliki
core
.