acct(5)

NUME
acct - fișierul de contabilizare a proceselor

SINOPSIS
#include <sys/acct.h>

DESCRIERE
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.

  Formatul fișierului de contabilizare versiunea 3
Î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 */
    };

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

STANDARDE
Niciunul.

ISTORIC
glibc 2.6.

Contabilizarea proceselor a luat naștere în BSD.

NOTE
Î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.

CONSULTAȚI ȘI
lastcomm(1), acct(2), accton(8), sa(8)

TRADUCERE
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 (https://www.gnu.org/licenses/gpl-3.0.html) 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.