Procesy¶
- Proces to:
dane programu,
- dane systemowe
- zmienne środowiskowe,
- strumienie stdin, stdout, stderr
- otwarte pliki
kod programu;
- Proces jest związany z:
- jednym właścicielem,
- określonymi uprawnieniami,
- priorytetem.
ps
Stan procesów. (processes)
-e, -A Wyświetl wszystkie procesy -u USERS Wyświetl procesy należące do wskazanych użytkowników -U USERS Wyświetl procesy których real user ID odpowiada wskazanym użytkownikom -f Wyświetl pełną (full) listę: UID, PID, PPID, C, STIME, TTY, TIME, CMD. Wyświetla pełną nazwę polecenia (także łącznie z argumentami) -l Wyświetl długą (long) listę: wszystkie informacje oprócz STIME. - Kolumny:
- S - Stan procesu
- UID - Identyfikator właściciela
- PID - Identyfikator procesu
- PPID - Identyfikator procesu-rodzica
- C - Użycie procesora
- PRI - Priorytet (0 - wysoki priorytet, ważny proces; 99 - niski priorytet)
- NI - Niceness - poziom obniżenia priorytetu (między -20 i 19) patrz: komenda nice
- STIME - Czas uruchomienia procesu
- TTY - Identyfikator konsoli
- TIME - Całkowity czas wykonywania procesu
- CMD - Uruchomiona komenda (-f - pełna ścieżka komendy oraz argumenty)
- Stan procesu:
- R - Wykonywany (running or runnable)
- S, D - Oczekujący z możliwością przerwania (czeka na zdarzenie, uninterruptible sleep) i bez możliwości przerwania (najczęściej operacja IO, interruptible sleep)
- X - Zakonczny, martwy (dead) - nie powinno się pojawiać
- T - Stopped, either by a job control signal or because it is being traced.
- Z - Proces “zombie” (defunct) - proces zakończony, pamięć dealokowana, wpis nie usunięty z tabeli procesów - czeka aż rodzic odczyta stan (wait)
top
Aktualny stan procesów.
- Skróty klawiszowe:
- k – wyślij sygnał do procesu
- u – wyświetl procesy wskazanego użytkownika
- r – zmień priorytet działającego procesu
- q – zakończ działanie
- O – posortuj według wskazanego pola
- A – sortuj według czasu rozpoczęcia procesu
- M – sortuj według zużycia pamięci
- N – sortuj według identyfikatorów procesów
- P – sortuj według zajętości procesora
- Graficzne odmiany:
ksysguard
(KDE)gtop
(Gnome)htop
pstree
- Hierarchia procesów. (process tree)
Manipulacja procesami¶
kill
Wysyła sygnał do procesu rozpoznanego przez jego PID. Domyślnie wysyła sygnał TERM (termination) sygnał zamknięcia.
-l, -L Wypisz wszystkie sygnały. -l N Przetłumacz numer sygnału na nazwę -N Określ sygnał przez jego numer, np. -9 -nazwa, -SIGnazwa Określ sygnał przez nazwę, np. -TERM, albo -SIGTERM - Przydatne sygnały:
- TERM (SIGTERM) Wyślij do procesu sygnał terminate zamykający proces
- KILL (SIGKILL) Wyślij do procesu sygnał kill forsowne zamykający proces
- HUP (SIGHUP) Wyślij do procesu sygnał hang up zawieszający działanie procesu
kill 1290 1291
- Wyślij sygnał TERM do procesów o identyfikatorach 1290 i 1291
kill -9 1300
- Brutalne zamknięcie procesu do PID 1300
Sygnał TERM można wysłać do obecnie działającego na pierwszym planie procesu za pomocą kombinacji klawiszy CTRL+C
killall
Wysyła sygnał do procesu rozpoznanego przez nazwe komendy. Domyślnie wysyła sygnał TERM (termination) sygnał zamknięcia. Działa analogicznie do
kill
.killall vim emacs
- Wyślij sygnał TERM do procesów komend vim i emacs (zamknie wszystkie uruchomione edytory vim i emacs)
nice
Uruchom proces ze zmniejszonym priorytetem, zwiększonym poziomem niceness.
-n, --adjustment=N Ustaw niceness na N nice -n 10 emacs
- uruchom program emacs z parametrem niceness równym 10, co spowoduje zmniejszenie ważności procesu
nice -n -10 emacs
- uruchom program emacs z parametrem niceness równym -10 - zwiększenie ważności (parametr o wartości <0 może być nadany tylko przez administratora)
renice
- Zmień priorytet działającemu procesowi.
Łapanie sygnałów¶
trap
Oprogramowanie obsługi sygnału dla bieżącego procesu:
trap CMD SIGNAL [ SIGNAL ... ]
trap "echo Hello!" SIGINT echo my PID=$$ kill -SIGINT $$Usuwanie obsługi:
trap "" SIGINT
Zadania (jobs)¶
Kontrola zadaniami - możliwość zawiesznia i wznawiania działania procesów. Zadania są pzypisane do konkretnego terminala.
Zawieszanie procesu z konsoli bash
: <ctrl> + z
- Kontrola zadania za pomocą sygnalów (mało praktyczne...):
- Zawieszanie procesu: SIGSTOP (19)
- Uaktywnienie procesu: SIGCONT (18)
jobs
Tablica aktywnych zadań
-l Więcej informacji. -p Tylko PID. fg
Uaktywnienie procesu. (foreground)
fg vim
- Uaktywnienie procesu vim (tylko w wypadku kiedy działa jeden proces vim)
fg 1
- Uaktywnienie zadania 1
bg
Uaktywnienie procesu w tle. (background)
bg vim
- Uaktywnienie procesu vim w tle (tylko w wypadku kiedy działa jeden proces vim)
bg 1,2,3
- Uaktywnienie zadań 1, 2, 3 w tle.
Polecenie kill
może też służyć do zamykania zadań, jeśli wskażemy PID
zadania: operator %
.
kill %1
- Zabij zadanie nr 1.
Dowolne polecenie można rozpocząć w tle za pomocą opertora &
.
firefox &
- Uruchom program firefox w tle.
PID ostatnio uruchomionego procesu jest dostępny pod zmienną $!.
echo $!
- Wyświetla PID ostatnio wykonanego polecenia.
echo $$
- Wyświetla PID bieżącego procesu.
Zadania¶
http://www.cs.put.poznan.pl/csobaniec/edu/sop/sop1.html (Rozdział 5: Procesy, strona 19)