PS(1)

NAZWA
ps - zgłoś status procesu

SKŁADNIA
ps [-] [lujsvmaxScewhrnu] [txx] [O[+|-]k1[[+|-]k2...]] [pids] Są także trzy długie opcje: --sortX[+|-]key[,[+|-]key[,...]] --help --version W drodze jest więcej długich opcji...

OPIS
ps daje opis bieżących procesów. Jeśli potrzebujesz powtarzającego się statusu, użyj top(1). Ta strona podręcznika man opisuje wersję ps opartą o /proc, a przynajmniej próbuje tego dokonać.

OPCJE LINII KOMEND
Argumenty linii komend mogą być opcjonalnie poprzedzone `-', lecz nie ma ku temu potrzeby. Istnieją także `długie opcje' w stylu GNU; zobacz niżej.
l   długi format
u   format użytkownika: podaje nazwę użytkownika i czas startu
j   format prac: pgid sid
s   format sygnału
v   format vm
m   wyświetla informację o pamięci (połącz z flagą p aby uzyskać ilość stron).
f   "forest" (las) - format drzewiasty
a   pokaż także procesy innych użytkowników
x   pokaż procesy bez kontrolującego terminala
S   dodaj czas cpu potomka i błędy stron
c   nazwa komendy z task_struct
e   pokaż środowisko za linią komend i ` + '
w   szerokie wyjście: nie skracaj linii komend aby mieściły się w jednej linii. Można podawać więcej niż jedno w.
h   bez nagłówka
r   tylko pracujące procesy
n   wyjście numeryczne dla USER i WCHAN.

txx tylko procesy z kontrolującym tty XX; dla xx możesz użyć zarówno nazwy urządzenia z "/dev", jak i tej nazwy z dopuszczalnym odłupaniem tty lub cu. Jest to odwrócona heurystyka, której ps używa do wydrukowania skróconych nazw tty w polu TT, np. ps -t1.

O[+|-]k1[,[+|-]k2[,...]]
    Ułóż listing procesów według wielopoziomowego sortowania podanego przez sekwencję kluczy short z SHORT KEYS, k1, k2, ... Domyślna specyfikacja istnieje dla każdego z różnych formatów ps. Są one przeciążane przez uzytkwonika wskazującego kolejność. Znak `+' jest opcjonalny. `-' odwraca znaczenie tylko jednego klucza -- tego, przed którym jest podany. Opcja O, podobnie jak t i pids musi być ostatnią opcją pojedynczego argumentu linii komend, lecz specyfikacje kolejnych argumentów są łączone.

pids
    Listuj tylko podane procesy; są one oddzielone przecinkami. Lista musi być podana tuż za ostatnią opcją w pojedynczym argumencie linii komend, bez rozdzielających spacji, np. ps -j1,4,5. Listy podane w kolejnych argumentach są łączone, np. ps -l 1,2 3,4 5 6 wylistuje procesy od 1 do 6 w długim formacie. Jeśli podano pidy, to są one listowane bez względu na nic. Jeśli podano tty, to bez względu na nic są listowane odpowiadające mu procesy. Te dwie właściwości przeciążają flagi

DŁUGIE OPCJE LINII KOMEND
Opcje te są poprzedzane podwójnym myślnikiem.

--sortX[+|-]key[,[+|-]key[,...]]
    Wybierz wieloliterowy klucz z sekcji KLUCZE SORTOWANIA. X może być dowolnym znakiem rozdzielającym. Aby było w stylu GNU, użyj `='. Znak `+' jest tak naprawdę opcjonalny, ponieważ domyślnym kierunkiem jest zwiększanie numerycznego lub leksykograficznego porządku, np: ps -jax --sort=uid,-ppid,+pid

--help
    Pobież informacje o użyciu. Może to być bardziej aktualne niż ta strona podręcznika man.

--version
    Wyświetl wersję i źródło tego programu.

KLUCZE SORTOWANIA
Zauważ, że wartości używane w sorotwaniu są wartościami wewnętrznymi ps i nie sa gotowymi wartościami, które są używane w którymś z pól wyjściowych. Jeśli ktoś chciałby zgłosić się do napisania specjalnych funkcji porównywania dla gotowych wartości, ... ;-) KRÓTKA DŁUGA OPIS
c       cmd             Sama nazwa programu wykonywalnego
C       cmdline         Pełna linia komend
f       flags           Flagi jak w polu F długiego listingu
g       pgrp            Id grupy procesu
G       tpgid           Id grupy procesu kontrolującego tty
j       cutime          Kumulujący czas użytkownika
J       cstime          Kumulujący czas systemu
k       utime           Czas użytkownika
K       stime           Czas systemu
m       min_flt         Ilość mniejszych błędów stron
M       maj_flt         Ilość większych błędów stron
n       cmin_flt        Kumulujące mniejsze błędy stron
N       cmaj_flt        Kumulujące większe błędy stron
o       session         ID sesji
p       pid             ID procesu
P       ppid            ID procesu rodzicielskiego
r       rss             Wartość `resident set size'
R       resident        Wartość `resident pages'
s       size            Rozmiar pamięci w kilobajtach
S       share           Wielkość stron dzielonych
t       tty             Minorowy numer urządzenia tty
T       start_time      Czas uruchomienia procesu
U       uid             Id użytkownika
u       user            Nazwa użytkownika
v       vsize           Całkowity rozmiar VM (pamięci) w bytes
y       priority        Priorytet w shedulerze jądra

OPISY PÓL

PRI Jest to pole licznika struktury zadania (task). Jest to czas w HZ przypuszczalnego timeslice procesu.

NI  Standardowa unixowa wartość nice; wartości dodatnie oznaczają mniej czasu cpu.

SIZE
    Rozmiar wirtualnego obrazu; rozmiar tekstu+danych+stosu.

RSS Resident set size; kilobajty programu w pamięci.

WCHAN
    Nazwa funkcji jądra, gdzie proces śpi, od której odjęto przedrostek `sys_' Jeśli /etc/psdatabase nie istnieje, jest to tylko wartość szesnastkowa.

STAT
    Informacja o statusie procesu. Pierwsze pole to R dla `runnable' (zdolny do pracy), S dla śpiącego (sleeping), D dla nieprzerywalnego snu (uninterruptible sleep), T dla zastopowanego, trace'owanego, lub Z dla procesu zombie. Kolejne pole zawiera W w wypadku gdy proces nie ma stron rezydentnych (resident pages). Trzecie pole przyjmuje wartość N w wypadku gdy proces ma dodatnią wartość nice (poleNI ).

TT  Kontrolujący tty.

PAGEIN
    Ilość większych błędów stron (błędów stron, które powodują odczytywanie stron z dysku, właczając strony odczytywane z buforującego cache).

TRS Rozmiar rezydenta tekstu (Text resident size).

SWAP
    Kilobajty (lub gdy podano opcję -p strony) na urządzeniu swap.

SHARE
    Pamięć dzielona.

ODNAWIANIE
Ta, oparta o proc wersja ps działa dzięki odczytywaniu plików z systemu plików proc, zamontowanego w /proc. Ten ps nie potrzebuje być suidowanym do kmem lub mieć konkretnych przywilejów by działać. Nie dawaj więc tej wersji ps żadnych specjalnych uprawnień.

Aby dostać znaczące dane z pola WCHAN, będziesz musiał odnowić bazę /etc/psdatabase przez uruchomienie /etc/psupdate. Powinno to być robione za każdym razem gdy kompilujesz jądro. Powinieneś też raz uruchomić `ps' jako root, a potem każdorazowo gdy zmienią się urządzenia tty w "/dev". Od wydania procps-1.00, ps/top odczytują gdy to możliwe System.map. Ścieżka przeszukiwania do jądrowego rozdziału adres-symbol to:
            $PS_SYSTEM_MAP
            /boot/System.map-`uname -r`
            /boot/System.map
            /lib/modules/`uname -r`/System.map
            /etc/psdatabase
            /boot/psdatabase-`uname -r`
            /boot/psdatabase,
            /lib/modules/`uname -r`/psdatabase

UWAGI
Członek used_math struktury task_struct nie jest pokazywany, gdyż crt0.s sprawdza czy jest obecna matematyka. Powoduje to ustawieie dla wszystkich procesów flagi `math', więc jest bezwartościowe.

Programy wyswapowane na dysk będą pokazywane bez argumentów linii komend, chyba że w nawiasach zostanie podana opcja c.

%CPU pokazuje procent czasu procesora. Nie wyjdzie tam 100%, chyba że masz szczęście. Jest to użyty czas podzielony przez czas, przez który proces już działa.

Pola SIZE i RSS nie liczą tabel stron i struktura struktury task_struct proc; jest to przynajmniej 12K pamięci, która zawsze jest rezydentna. SIZE jest wirtualnym rozmiarem procesu (kod+dane+stos).

Aby dokonać mapowania numeru urządzenia na nazwę, ps używa pliku zwanego "/etc/psdevtab" (odnawianego za każdym razem gdy "/dev" staje się nowsze i gdy prawa pozwalają na odnowienie). Jeśli prawa nie pozwalają na odnowienie, każde wywołanie ps wymaga stat(2) na każdym pliku w katalogu "/dev". Jeśli "/dev" zmienia się na twoim systemie bardzo często, powienieneś równie często uruchamiać spod roota ps. ;-)

AUTOR
ps początkowo był napisany przez Branko Lankestera (lankeste@fwi.uva.nl), Michael K. Johnson (johnsonm@sunsite.unc.edu) znacząco go zmodyfikował, aby używał systemu plików proc. Michael Shields (mjshield@nyx.cs.du.edu) dodał właściwość pid-listy. Charles Blake(cblake@bbn.com) dodał wielopoziomowe sotrowanie, bibliotekę w stylu dirent, bazę mapowań nazwy na numer dla urządzeń, szukanie bezpośrednio w System.map i sporo usprawnień estetycznych i oczyszczeń w kodzie źródłowym. Jest on obecnym opiekunem tego pakietu.