Provided by: manpages-pl_4.27.0-1_all bug

NAZWA

       acct - plik ewidencji procesu

SKŁADNIA

       #include <sys/acct.h>

OPIS

       Jeśli  jądro  zostało  zbudowane z włączoną opcją ewidencjonowania procesów (CONFIG_BSD_PROCESS_ACCT), to
       wywołanie funkcji systemowej acct(2) włącza to ewidencjonowanie, na przykład:

           acct("/var/log/pacct");

       Kiedy ewidencjonowanie procesów jest włączone, jądro zapisuje  rekord  do  pliku  ewidencji  dla  każdego
       zakończonego procesu w systemie. Rekord ten zawiera informacje o zakończonym procesie i jest zdefiniowany
       <sys/acct.h> następująco:

           #define ACCT_COMM 16

           typedef u_int16_t comp_t;

           struct acct {
               char ac_flag;           /* Znaczniki ewidencjonowania */
               u_int16_t ac_uid;       /* ID użytkownika */
               u_int16_t ac_gid;       /* ID grupy */
               u_int16_t ac_tty;       /* Terminal sterujący */
               u_int32_t ac_btime;     /* Czas utworzenia procesu
                                          (w sekundach od początku epoki) */
               comp_t    ac_utime;     /* Czas CPU użytkownika*/
               comp_t    ac_stime;     /* Czas CPU systemu */
               comp_t    ac_etime;     /* Czas działania procesu */
               comp_t    ac_mem;       /* Średnie użycie pamięci (kB) */
               comp_t    ac_io;        /* Przesłane znaki (nieużywane) */
               comp_t    ac_rw;        /* Bloki odczytane lub zapisane (nieużywane) */
               comp_t    ac_minflt;    /* Mniejsze błędy stron */
               comp_t    ac_majflt;    /* Większe błędy stron */
               comp_t    ac_swaps;     /* Liczba wymian (nieużywane) */
               u_int32_t ac_exitcode;  /* Status zakończenia procesu
                                          (patrz wait(2)) */
               char      ac_comm[ACCT_COMM+1];
                                       /* Nazwa polecenia (zakończona znakiem null
                                          nazwa bazowa ostatnio wykonywanego polecenia) */
               char      ac_pad[X];    /* bajty wyrównania */
           };

           enum { /* Bity, które mogą być ustawione w polu ac_flag */
               AFORK = 0x01, /* Wykonano fork, ale nie exec */
               ASU = 0x02, /* Użyte przywileje superużytkownika */
               ACORE = 0x08, /* Zrzucono pamięć */
               AXSIG = 0x10 /* Zabito sygnałem */
            };
           };

       Typ  danych comp_t jest wartością zmiennoprzecinkową składającą się z 3-bitowego wykładnika o podstawie 8
       oraz 13-bitowej mantysy. Wartość c tego typu można  skonwertować  do  typu  long  integer  w  następujący
       sposób:

           v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3);

       Pola  ac_utime,  ac_stime  oraz  ac_etime  odmierzają czas w „tyknięciach zegara”; aby skonwertować go na
       sekundy, należy podzielić te wartości przez sysconf(_SC_CLK_TCK).

   Wersja 3 formatu pliku ewidencji
       Od Linuksa 2.6.8 może być tworzona alternatywna wersja pliku ewidencji, jeżeli  podczas  budowania  jądra
       ustawiono  opcję  CONFIG_BSD_PROCESS_ACCT_V3.  Jeśli  ta  opcja jest ustawiona, to plik ewidencji zawiera
       dodatkowe pola, a szerokość pól c_uid i ac_gid  jest  zwiększona  z  16  do  32  bitów  (dostosowując  do
       zwiększonego  rozmiaru  identyfikatorów  użytkowników  i  grup w Linuksie 2.4 i późniejszych). Rekordy są
       zdefiniowane następująco:

           struct acct_v3 {
               char      ac_flag;      /* Znaczniki */
               char      ac_version;   /* Zawsze ustawione na ACCT_VERSION (3) */
               u_int16_t ac_tty;       /* Terminal sterujący */
               u_int32_t ac_exitcode;  /* Stan zakończenia procesu */
               u_int32_t ac_uid;       /* Rzeczywiste ID użytkownika */
               u_int32_t ac_gid;       /* Rzeczywiste ID grupy */
               u_int32_t ac_pid;       /* ID procesu */
               u_int32_t ac_ppid;      /* ID procesu rodzica */
               u_int32_t ac_btime;     /* Czas utworzenia procesu */
               float     ac_etime;     /* Czas działania procesu */
               comp_t    ac_utime;     /* Czas CPU użytkownika */
               comp_t    ac_stime;     /* Czas CPU systemu */
               comp_t    ac_mem;       /* Średnie zużycie pamięci (kB) */
               comp_t    ac_io;        /* Transferowane znaki(nieużywane) */
               comp_t    ac_rw;        /* Bloki przeczytane lub zapisane
                                          (nieużywane) */
               comp_t    ac_minflt;    /* Mniejsze błędy stron */
               comp_t    ac_majflt;    /* Większe błędy stron */
               comp_t    ac_swaps;     /* Liczba wymian (nieużywane) */
               char      ac_comm[ACCT_COMM]; /* Nazwa polecenia */
           };

WERSJE

       Chociaż jest  obsługiwane  przez  większość  systemów,  to  nie  jest  zestandaryzowane,  więc  szczegóły
       implementacji mogą się różnić między systemami.

STANDARDY

       Brak.

HISTORIA

       glibc 2.6.

       Ewidencjonowanie procesów ma swój początek w systemach BSD.

UWAGI

       Rekordy pliku ewidencji są posortowane po czasie zakończenia procesu.

       Do  Linuksa  2.6.9 włącznie oddzielny rekord ewidencji jest zapisywany dla każdego wątku tworzonego przez
       bibliotekę NPTL. Od Linuksa 2.6.10 pojedynczy rekord jest zapisywany dla całego  procesu  po  zakończeniu
       ostatniego jego wątku.

       Plik    /proc/sys/kernel/acct   opisany   w   proc(5)   definiuje  ustawienia  wpływające  na  zachowanie
       ewidencjonowania procesów, gdy wyczerpuje się miejsce na dysku.

ZOBACZ TAKŻE

       lastcomm(1), acct(2), accton(8), sa(8)

TŁUMACZENIE

       Tłumaczenie niniejszej strony  podręcznika:  Andrzej  Krzysztofowicz  <ankry@green.mf.pg.gda.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  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.

Linux man-pages 6.9.1                            2 maja 2024 r.                                          acct(5)