.\" Copyright (C) 2008, Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" This file is distributed under the same license as original manpage .\" Copyright of the original manpage: .\" Copyright © 2008 Michael Kerrisk .\" Copyright © of Polish translation: .\" Andrzej M. Krzysztofowicz (PTM), 2002. .\" Robert Luberda , 2014. .\" Michał Kułach , 2016. .TH ACCT 5 2008\-06\-15 Linux "Podręcznik programisty Linuksa" .SH NAZWA acct \- plik ewidencji procesu .SH SKŁADNIA \fB#include \fP .SH OPIS Jeśli jądro zostało zbudowane z włączoną opcją\ ewidencjonowania procesów (\fBCONFIG_BSD_PROCESS_ACCT\fP), to wywołanie funkcji systemowej \fBacct\fP(2) włącza to ewidencjonowanie, na przykład: .in +4n acct("/var/log/pacct"); .in 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 \fI\fP następująco: .in +4n .nf #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[\fIX\fP]; /* bajty wyrównania */ }; enum { /* Bity, które mogą być\ ustawione w polu ac_flag */ AFORK = 0x01, /* Wykonał fork, ale nie exec */ ASU = 0x02, /* Używał przywilejów administratora */ ACORE = 0x08, /* Wykonał zrzut pamięci (core) */ AXSIG = 0x10 /* Został zabity sygnałem */ }; .fi .in .PP Typ danych \fIcomp_t\fP jest wartością zmiennoprzecinkową składającą się z 3\-bitowego wykładnika o podstawie 8 oraz 13\-bitowej mantysy. Wartość \fIc\fP tego typu można skonwertować do typu long integer w następujący sposób: .nf v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3); .fi .PP Pola \fIac_utime\fP, \fIac_stime\fP oraz \fIac_etime\fP odmierzają czas w "tyknięciach zegara"; aby skonwertować go na sekundy, należy podzielić te wartości przez \fIsysconf(_SC_CLK_TCK)\fP. .SS "Wersja 3 formatu pliku ewidencji" Od wersji jądra 2.6.8 może być tworzona alternatywna wersja pliku ewidencji, jeżeli podczas budowania jądra ustawiono opcję \fBCONFIG_BSD_PROCESS_ACCT_V3\fP. Jeśli ta opcja jest ustawiona, to plik ewidencji zawiera dodatkowe pola, a szerokość pól \fIc_uid\fP i \fIac_gid\fP 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: .in +4n .nf 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 */ }; .fi .in .SH WERSJE Struktura \fIacct_v3\fP jest definiowana w glibc począwszy od wersji 2.6. .SH "ZGODNE Z" Ewidencjonowanie procesów ma swój początek w systemach BSD. Chociaż jest obsługiwane przez większość systemów, to nie jest ustandaryzowane, więc szczegóły implementacji mogą się różnić między systemami. .SH UWAGI Rekordy pliku ewidencji są posortowane po czasie zakończenia procesu. W jądrach aż do wersji 2.6.9 włącznie oddzielny rekord ewidencji jest zapisywany dla każdego wątku tworzonego przez bibliotekę NPTL. Od wersji 2.6.10 Linuksa pojedynczy rekord jest zapisywany dla całego procesu po zakończeniu ostatniego jego wątku. Plik \fIproc/sys/kernel/acct\fP opisany w \fBproc\fP(5) definiuje ustawienia wpływające na zachowanie ewidencjonowania procesów, gdy wyczerpuje się miejsce na dysku. .SH "ZOBACZ TAKŻE" \fBlastcomm\fP(1), \fBacct\fP(2), \fBaccton\fP(8), \fBsa\fP(8) .SH "O STRONIE" Angielska wersja tej strony pochodzi z wydania 4.05 projektu Linux \fIman\-pages\fP. Opis projektu, informacje dotyczące zgłaszania błędów, oraz najnowszą wersję oryginału można znaleźć pod adresem \%https://www.kernel.org/doc/man\-pages/. .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Andrzej M. Krzysztofowicz (PTM), Robert Luberda i Michał Kułach . .PP Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją \fB 4.05 \fPoryginału.