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 :
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 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 |
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
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 .
GRUPA MEDIA INFORMACYJNE & ADAM NAWARA
|