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:
    1. TERM (SIGTERM) Wyślij do procesu sygnał terminate zamykający proces

    1. KILL (SIGKILL) Wyślij do procesu sygnał kill forsowne zamykający proces

    1. 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.

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.

Zadania

Skrypt dr Sobańca (Rozdział 4: Procesy, strona 15)