acct(5) File Formats Manual acct(5)

acct - fișierul de contabilizare a proceselor

#include <sys/acct.h>

Dacă nucleul este construit cu opțiunea de contabilizare a proceselor activată (CONFIG_BSD_PROCESS_ACCT), atunci apelarea acct(2) pornește contabilizarea proceselor, de exemplu:


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

Atunci când contabilizarea proceselor este activată, nucleul scrie o înregistrare în fișierul de contabilitate atunci când fiecare proces din sistem se termină. Această înregistrare conține informații despre procesul terminat și este definită în <sys/acct.h> după cum urmează:


#define ACCT_COMM 16
typedef u_int16_t comp_t;
struct acct {
    char ac_flag;           /* Fanioane contabilizare */
    u_int16_t ac_uid;       /* Id-ul utilizatorului de contabilizare */
    u_int16_t ac_gid;       /* Id-ul grupului de contabilizare */
    u_int16_t ac_tty;       /* Terminalul de control */
    u_int32_t ac_btime;     /* Ora de creare a procesului
                               (secunde de la Epocă)*/
    comp_t    ac_utime;     /* Timpul CPU al utilizatorului */
    comp_t    ac_stime;     /* Timpul CPU al sistemului */
    comp_t    ac_etime;     /* Timpul scurs */
    comp_t    ac_mem;       /* Media de utilizare a memoriei (ko) */
    comp_t    ac_io;        /* Caracterele transferate (neutilizate) */
    comp_t    ac_rw;        /* Blocurile citite sau scrise (neutilizate)*/
    comp_t    ac_minflt;    /* Defecțiuni minore de pagină */
    comp_t    ac_majflt;    /* Defecțiuni majore de pagină */
    comp_t    ac_swaps;     /* Numărul de swap-uri (neutilizate) */
    u_int32_t ac_exitcode;  /* Starea de terminare a procesului
                               (a se vedea wait(2)) */
    char      ac_comm[ACCT_COMM+1];
                            /* Numele comenzii (numele de bază al ultimei
                               comenzi executate; terminată cu null) */
    char      ac_pad[X];    /* octeți de umplutură */
};
enum {          /* Biții care pot fi stabiliți în câmpul ac_flag */
    AFORK = 0x01,           /* A executat «fork», dar nu «exec» */
    ASU   = 0x02,           /* Privilegii de superutilizator utilizate */
    ACORE = 0x08,           /* Descarcă conținutul memoriei */
    AXSIG = 0x10            /* Omorât de un semnal */
};

Tipul de date comp_t este o valoare în virgulă mobilă care constă dintr-un exponent de 3 biți, în baza 8, și o mantisă de 13 biți. O valoare, c, de acest tip poate fi convertită într-un număr întreg (lung) după cum urmează:

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

Câmpurile ac_utime, ac_stime și ac_etime măsoară timpul în „tic-tacuri de ceas”; împărțiți aceste valori cu sysconf(_SC_CLK_TCK) pentru a le converti în secunde.

Începând cu Linux 2.6.8, o versiune alternativă opțională a fișierului de contabilizare poate fi produsă dacă opțiunea CONFIG_BSD_PROCESS_ACCT_V3 este activată la compilarea nucleului. Cu această opțiune activată, înregistrările scrise în fișierul de contabilizare conțin câmpuri suplimentare, iar lățimea câmpurilor c_uid și ac_gid este lărgită de la 16 la 32 de biți (în conformitate cu dimensiunea crescută a UID și GID din Linux 2.4 și ulterior). Înregistrările sunt definite după cum urmează:


struct acct_v3 {
    char      ac_flag;      /* Fanioane */
    char      ac_version;   /* Stabilit întotdeauna la ACCT_VERSION (3) */
    u_int16_t ac_tty;       /* Terminalul de control*/
    u_int32_t ac_exitcode;  /* Starea de terminare a procesului */
    u_int32_t ac_uid;       /* Id-ul de utilizator real */
    u_int32_t ac_gid;       /* Id-ul de grup real */
    u_int32_t ac_pid;       /* Id-ul procesului */
    u_int32_t ac_ppid;      /* Id-ul procesului părinte */
    u_int32_t ac_btime;     /* Ora și data de creare a procesului */
    float     ac_etime;     /* Timpul scurs */
    comp_t    ac_utime;     /* Timpul CPU al utilizatorului */
    comp_t    ac_stime;     /* Timpul CPU al sistemului */
    comp_t    ac_mem;       /* Media de utilizare a memoriei (ko) */
    comp_t    ac_io;        /* Caracterele transferate (neutilizate) */
    comp_t    ac_rw;        /* Blocurile citite sau scrise
                               (neutilizate) */
    comp_t    ac_minflt;    /* Defecțiuni minore de pagină */
    comp_t    ac_majflt;    /* Defecțiuni majore de pagină */
    comp_t    ac_swaps;     /* Numărul de swap-uri (neutilizate) */
    char      ac_comm[ACCT_COMM]; /* Numele comenzii */
};

Deși este prezentă pe majoritatea sistemelor, nu este standardizată, iar detaliile variază oarecum de la un sistem la altul.

Niciunul.

glibc 2.6.

Contabilizarea proceselor a luat naștere în BSD.

Înregistrările din fișierul de contabilizare sunt ordonate în funcție de ora de încheiere a procesului.

Până la Linux 2.6.9 inclusiv, se scrie o înregistrare contabilă separată pentru fiecare fir de execuție creat cu ajutorul bibliotecii de fire de execuție NPTL; începând cu Linux 2.6.10, se scrie o singură înregistrare contabilă pentru întregul proces la terminarea ultimului fir de execuție din proces.

Fișierul /proc/sys/kernel/acct, descris în proc(5), definește parametrii care controlează comportamentul contabilizării proceselor atunci când spațiul pe disc este redus.

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

Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.

2 mai 2024 Pagini de manual de Linux 6.8