proc_pid_stat(5)

NAZWA
/proc/pid/stat - informacje o stanie

OPIS

/proc/pid/stat
    Informacje o stanie procesu. Korzysta z tego ps(1). Są one zdefiniowane w pliku źródeł jądra fs/proc/array.c.

    Pola te, w kolejności, razem z ich poprawnymi określeniami formatu scanf(3), są wypisane poniżej. To, czy pola te wyświetlają prawidłowe wartości, zależy od sprawdzenia trybu dostępu ptrace PTRACE_MODE_READ_FSCREDS | PTRACE_MODE_NOAUDIT (zob. ptrace(2)). Jeśli sprawdzenie to odmówi dostępu, to wartość pola będzie wyświetlona jako 0. Pola, których to dotyczy, oznaczono [PT].

    (1) pid %d
        Identyfikator procesu (PID).

    (2) comm %s
        Nazwa pliku wykonywalnego w nawiasach. Łańcuchy dłuższe niż TASK_COMM_LEN (16) znaków (wliczając końcowy bajt null) są po cichu przycinane. Widać, czy plik uległ wymianie.

    (3) state %c
        Jeden z poniższych znaków, wskazujących na status procesu:

        R   Działający (Running)

        S   Śpiący (Sleeping) w przerywalnym oczekiwaniu

        D   Śpiący w nieprzerywalnym oczekiwaniu dyskowym

        Z   Zombie

        T   Zatrzymany sygnałem lub (przed Linuksem 2.6.33) zatrzymany ślad (trace stopped)

        t   Zatrzymany śledzeniem (tracing stop) - Linux 2.6.33 i nowszy

        W   Stronicowanie (tylko przed Linuksem 2.6.0)

        X   Martwy (od Linuksa 2.6.0)

        x   Martwy (między Linuksem 2.6.33 a 3.13)

        K   Wakekill - oczekiwanie; wybudzenie przy śmiertelnym sygnale (między Linuksem 2.6.33 a 3.13)

        W   Budzący się (waking; między Linuksem 2.6.33 a 3.13)

        P   Zaparkowany (między Linuksem 3.9 a 3.13)

        I   Bezczynny (idle; od Linuksa 4.14)

    (4) ppid %d
        PID procesu macierzystego tego procesu.

    (5) pgrp %d
        Identyfikator grupy procesów danego procesu.

    (6) session %d
        Identyfikator sesji procesu.

    (7) tty_nr %d
        Kontroluje terminal procesu (poboczny numer urządzenia jest przechowywany w kombinacji bitów 31 do 20 i 7 do 0, natomiast główny numer urządzenia jest w bitach 15 do 8).

    (8) tpgid %d
        Identyfikator grupy procesów pierwszoplanowych kontrolującego terminala procesu.

    (9) flags %u
        Słowo flag jądra dla danego procesu. Znaczenie poszczególnych bitów określają definicje PF_* w pliku źródeł jądra Linux include/linux/sched.h. Szczegóły zależą od wersji jądra.

        Format tego pola przed Linuksem 2.6 miał postać %lu.

    (10) minflt %lu
        Liczba pomniejszych chybień, które popełnił proces, a które nie wymagały załadowania strony pamięci z dysku.

    (11) cminflt %lu
        Liczba pomniejszych chybień procesów potomnych, na które się oczekuje.

    (12) majflt %lu
        Liczba głównych chybień, które popełnił proces, a które wymagały załadowania strony pamięci z dysku.

    (13) cmajflt %lu
        Liczba głównych chybień procesów potomnych, na które się oczekuje.

    (14) utime %lu
        Czas jaki został przydzielony procesowi w trybie użytkownika, mierzony w taktach zegara (podzielonych przez sysconf(_SC_CLK_TCK)). Obejmuje to czas gościa, guest_time (czas spędzony w czasie działania wirtualnego CPU, patrz niżej), tak więc aplikacje, które nie wiedzą o polu czasu gościa nie tracą tego czasu ze swych obliczeń.

    (15) stime %lu
        Czas, jaki został przydzielony procesowi w trybie jądra, mierzony w taktach zegara (podzielonych przez sysconf(_SC_CLK_TCK)).

    (16) cutime %ld
        Czas, jaki został przydzielony procesom potomnym tego procesu, na które się oczekuje, w trybie użytkownika, mierzony w taktach zegara (podzielonych przez sysconf(_SC_CLK_TCK)), patrz także times(2)). Obejmuje to czas gościa, cguest_time (czas spędzony działając na procesorze wirtualnym, patrz niżej).

    (17) cstime %ld
        Czas, jaki został przydzielony procesom potomnym tego procesu, na które się oczekuje, w trybie jądra, mierzony w taktach zegara (podzielonych przez sysconf(_SC_CLK_TCK).

    (18) priority %ld
        (Wyjaśnienie dla Linuksa 2.6) W przypadku procesów działających z zasadami planisty czasu rzeczywistego (policy poniżej; patrz sched_setscheduler(2)), jest to liczba przeciwna w stosunku do priorytetu planisty minus jeden, tzn. jest to zakres -2 do -100 odpowiadający priorytetom czasu rzeczywistego od 1 do 99. W przypadku procesów nie działających według tych zasad, jest to surowa wartość nice (setpriority(2) zgodna z podaną przez jądro. Jądro przechowuje wartości nice jako liczby w zakresie od 0 (wysoki) do 39 (niski), co odpowiada widocznemu dla użytkownika zakresowi nice od -20 do 19.

        Przed Linuksem 2.6 była to wartość skalowana w oparciu o wagę jaką planista przypisał do danego procesu.

    (19) nice %ld
        Wartość „nice” (patrz setpriority(2)) zawierająca się w zakresie od 19 (niski priorytet) do -20 (wysoki priorytet).

    (20) num_threads %ld
        Liczba wątków procesu (od Linuksa 2.6). Przed Linuksem 2.6 to pole miało przydzieloną na sztywno wartość 0, jako wypełniacz do usuniętego wcześniej pola.

    (21) itrealvalue %ld
        Czas w jiffies poprzedzający wysłanie przez czasomierz do procesu następnego sygnału SIGALRM. Od Linuksa 2.6.17, to pole nie jest dłużej utrzymywane i ma ustawioną na sztywno wartość 0.

    (22) starttime %llu
        Czas w jakim proces uruchomił się po rozruchu systemu. Przed Linuksem 2.6 wartość ta była wyrażona w tzw. „jiffies”. Od Linuksa 2.6 wartość jest wyrażana w taktach zegara (podzielonych przez sysconf(_SC_CLK_TCK)).

        Format tego pola przed Linuksem 2.6 miał postać %lu.

    (23) vsize %lu
        Rozmiar pamięci wirtualnej w bajtach.

    (24) rss %ld
        Resident Set Size: liczba stron, które proces ma w rzeczywistej pamięci. Są to po prostu strony, które obejmują przestrzeń tekstu, danych lub stosu. Nie obejmuje to stron, które nie były ładowane na żądanie lub które uległy wymianie. Wartość ta jest niedokładna, zob. /proc/pid/statm poniżej.

    (25) rsslim %lu
        Aktualne miękkie ograniczenie rss procesu w bajtach; patrz opis RLIMIT_RSS w getrlimit(2).

    (26) startcode %lu [PT]
        Adres, pod którym zaczyna się kod programu.

    (27) endcode %lu [PT]
        Adres, pod którym kończy się kod programu.

    (28) startstack%lu [PT]
        Adres początku (tzn. spód) stosu.

    (29) kstkesp %lu [PT]
        Bieżąca wartość ESP (wskaźnika stosu), określona na podstawie strony stosu jądra dla danego procesu.

    (30) kstkeip %lu [PT]
        Aktualny EIP (wskaźnik instrukcji).

    (31) signal %lu
        Maska bitowa oczekujących sygnałów, wyświetlana jako liczba dziesiętna. Przestarzałe, ponieważ nie dostarcza informacji o sygnałach czasu rzeczywistego; prosimy używać /proc/pid/status zamiast tego pliku.

    (32) blocked %lu
        Maska bitowa zablokowanych sygnałów, wyświetlana jako liczba dziesiętna. Przestarzałe, ponieważ nie dostarcza informacji o sygnałach czasu rzeczywistego; prosimy używać /proc/pid/status zamiast tego pliku.

    (33) sigignore %lu
        Maska bitowa ignorowanych sygnałów, wyświetlana jako liczba dziesiętna. Przestarzałe, ponieważ nie dostarcza informacji o sygnałach czasu rzeczywistego; prosimy używać /proc/pid/status zamiast tego pliku.

    (34) sigcatch %lu
        Maska bitowa schwytanych sygnałów, wyświetlana jako liczba dziesiętna. Przestarzałe, ponieważ nie dostarcza informacji o sygnałach czasu rzeczywistego; prosimy używać /proc/pid/status zamiast tego pliku.

    (35) wchan %lu [PT]
        Jest to „kanał” na którym oczekuje proces. Jest to adres położenia w jądrze, gdzie proces jest w uśpieniu. Powiązaną nazwę symboliczną można znaleźć w /proc/pid/wchan.

    (36) nswap %lu
        Liczba stron, które uległy wymianie (nieutrzymywane).

    (37) cnswap %lu
        Łączna wartość nswap dla procesów potomnych (nieutrzymywane).

    (38) exit_signal %d (od Linuksa 2.1.22)
        Sygnał wysyłany przez ginący proces do jego procesu macierzystego.

    (39) processor %d (od Linuksa 2.2.8)
        Numer CPU, na którym proces ostatnio działał.

    (40) rt_priority %u (od Linuksa 2.5.19)
        Priorytet planisty czasu rzeczywistego, liczba w zakresie od 1 do 99 do procesów przydzielanych według zasad czasu rzeczywistego lub 0 do procesów nie czasu rzeczywistego (patrz sched_setscheduler(2)).

    (41) policy %u (od Linuksa 2.5.19)
        Polityka przydzielania zadaniom czasu procesora (patrz sched_setscheduler(2)). Dekodowana używając stałych SCHED_* w linux/sched.h.

        Format tego pola przed Linuksem 2.6.22 miał postać %lu.

    (42) delayacct_blkio_ticks %llu (od Linuksa 2.6.18)
        Sumaryczna zwłoka bloków wejścia/wyjścia, mierzona w taktach zegara (centysekundy).

    (43) guest_time %lu (od Linuksa 2.6.24)
        Czas gościa procesu (czas, jaki upłynął podczas działania na wirtualnym procesorze systemu operacyjnego gościa), mierzony w taktach zegara (podzielony przez sysconf(_SC_CLK_TCK)

    (44) cguest_time %ld (od Linuksa 2.6.24)
        Czas gościa potomków procesu, mierzony w taktach zegara (podzielony przez sysconf(_SC_CLK_TCK)).

    (45) start_data %lu (od Linuksa 3.3) [PT]
        Adres powyżej którego umieszczane są zainicjowane i niezainicjowane (BSS) dane programu.

    (46) end_data %lu (od Linuksa 3.3) [PT]
        Adres poniżej którego umieszczane są zainicjowane i niezainicjowane (BSS) dane programu.

    (47) start_brk %lu (od Linuksa 3.3) [PT]
        Adres, powyżej którego można rozciągnąć kopiec (ang. heap) za pomocą brk(2).

    (48) arg_start %lu (od Linuksa 3.5) [PT]
        Adres powyżej którego umieszczane są argumenty wiersza polecenia programu (argv).

    (49) arg_end %lu (od Linuksa 3.5) [PT]
        Adres poniżej którego umieszczane są argumenty wiersza polecenia programu (argv).

    (50) env_start %lu (od Linuksa 3.5) [PT]
        Adres powyżej którego umieszczane jest środowisko programu.

    (51) env_end %lu (od Linuksa 3.5) [PT]
        Adres poniżej którego umieszczane jest środowisko programu.

    (52) exit_code %d (od Linuksa 3.5) [PT]
        Kod zakończenia wątku w postaci przekazywanej przez waitpid(2).

ZOBACZ TAKŻE
proc(5), proc_pid_status(5)

TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Przemek Borys <pborys@dione.ids.pl>, Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 (https://www.gnu.org/licenses/gpl-3.0.html) lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.