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

НАИМЕНОВАНИЕ

       acct - файл программы учёта процессов

ОБЗОР

       #include <sys/acct.h>

ОПИСАНИЕ

       Если  ядро  собрано с включённым параметром учёта процессов (CONFIG_BSD_PROCESS_ACCT), то системный вызов
       acct(2) запустит программу учёта процесса:

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

       При включённой программе учёта процессов, ядро делает запись в файл учёта по каждому процессу системы  по
       его  завершении.  Эта  запись  содержит  информацию  о  завершённом  процессе и определена в <sys/acct.h>
       следующим образом:

           #define ACCT_COMM 16

           typedef u_int16_t comp_t;

           struct acct {
               char ac_flag;           /* Accounting flags */
               u_int16_t ac_uid;       /* Accounting user ID */
               u_int16_t ac_gid;       /* Accounting group ID */
               u_int16_t ac_tty;       /* Controlling terminal */
               u_int32_t ac_btime;     /* Process creation time
                                          (seconds since the Epoch) */
               comp_t    ac_utime;     /* User CPU time */
               comp_t    ac_stime;     /* System CPU time */
               comp_t    ac_etime;     /* Elapsed time */
               comp_t    ac_mem;       /* Average memory usage (kB) */
               comp_t    ac_io;        /* Characters transferred (unused) */
               comp_t    ac_rw;        /* Blocks read or written (unused) */
               comp_t    ac_minflt;    /* Minor page faults */
               comp_t    ac_majflt;    /* Major page faults */
               comp_t    ac_swaps;     /* Number of swaps (unused) */
               u_int32_t ac_exitcode;  /* Process termination status
                                          (see wait(2)) */
               char      ac_comm[ACCT_COMM+1];
                                       /* Command name (basename of last
                                          executed command; null-terminated) */
               char      ac_pad[X];    /* padding bytes */
           };

           enum {          /* Bits that may be set in ac_flag field */
               AFORK = 0x01,           /* Has executed fork, but no exec */
               ASU   = 0x02,           /* Used superuser privileges */
               ACORE = 0x08,           /* Dumped core */
               AXSIG = 0x10            /* Killed by a signal */
           };

       Тип данных comp_t - число с плавающей точкой, состоящее  из  3-разрядной  экспоненты  по  основанию  8  и
       13-разрядной  мантиссы.  Переменная c этого типа может быть преобразована к целому числу (long) следующим
       образом:

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

       Поля ac_utime, ac_stime и ac_etime хранят время в "тактах часов";  для  преобразования  в  секунды  нужно
       разделить значения на sysconf(_SC_CLK_TCK).

   Формат файла учёта процессов версии 3
       Начиная  с  ядра  версии  2.6.8,  можно  создавать файл учёта альтернативной версии, если задать параметр
       CONFIG_BSD_PROCESS_ACCT_V3 при сборке ядра. Если этот параметр установлен, то записи, сохранённые в файле
       учёта, будут содержать дополнительные поля, а ширина полей c_uid и ac_gid будет расширена с 16 до 32  бит
       (для  соответствия  с  увеличенным  размером  UID и GID в Linux 2.4 и позже). Записи определены следующим
       образом:

           struct acct_v3 {
               char      ac_flag;      /* Flags */
               char      ac_version;   /* Always set to ACCT_VERSION (3) */
               u_int16_t ac_tty;       /* Controlling terminal */
               u_int32_t ac_exitcode;  /* Process termination status */
               u_int32_t ac_uid;       /* Real user ID */
               u_int32_t ac_gid;       /* Real group ID */
               u_int32_t ac_pid;       /* Process ID */
               u_int32_t ac_ppid;      /* Parent process ID */
               u_int32_t ac_btime;     /* Process creation time */
               float     ac_etime;     /* Elapsed time */
               comp_t    ac_utime;     /* User CPU time */
               comp_t    ac_stime;     /* System time */
               comp_t    ac_mem;       /* Average memory usage (kB) */
               comp_t    ac_io;        /* Characters transferred (unused) */
               comp_t    ac_rw;        /* Blocks read or written
                                          (unused) */
               comp_t    ac_minflt;    /* Minor page faults */
               comp_t    ac_majflt;    /* Major page faults */
               comp_t    ac_swaps;     /* Number of swaps (unused) */
               char      ac_comm[ACCT_COMM]; /* Command name */
           };

ВЕРСИИ

       Хотя файл учёта процессов присутствует в большинстве систем,  он  не  стандартизирован  и  подробности  в
       разных системах несколько различаются.

СТАНДАРТЫ

       Отсутствуют.

ИСТОРИЯ

       glibc 2.6.

       Программа учета процессов была разработана в BSD.

ПРИМЕЧАНИЯ

       Записи в файле учёта упорядочены по времени завершения процессов.

       Вплоть  до  Linux  2.6.9,  включительно,  для  каждого  потока,  созданного  с  использованием библиотеки
       многопоточности NPTL, создавалась отдельная учетная  запись.  Начиная  с  Linux  2.6.10,  при  завершении
       последнего потока в процессе, записывается отдельная учетная запись для всего процесса.

       В  файле  /proc/sys/kernel/acct,  описанном в proc(5), определены настройки, которые управляют поведением
       учёта процессов при нехватке места на диске.

СМОТРИТЕ ТАКЖЕ

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

ПЕРЕВОД

       Русский перевод этой страницы руководства разработал(и) Dmitry Bolkhovskikh  <d20052005@yandex.ru>,  Yuri
       Kozlov <yuray@komyakino.ru>, Aleksandr Felda <isk8da@gmail.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                          acct(5)