Provided by: manpages-ru_4.19.0-7_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;           /* флаги учёта */
               u_int16_t ac_uid;       /* ID пользователя */
               u_int16_t ac_gid;       /* ID группы */
               u_int16_t ac_tty;       /* управляющий терминал */
               u_int32_t ac_btime;     /* время создания процесса
                                          (в секундах с начала эпохи) */
               comp_t    ac_utime;     /* время работы ЦП в пользовательском режиме */
               comp_t    ac_stime;     /* время работы ЦП в системном режиме */
               comp_t    ac_etime;     /* прошедшее время */
               comp_t    ac_mem;       /* среднее количество использованной памяти (КБ) */
               comp_t    ac_io;        /* передано символов (не используется) */
               comp_t    ac_rw;        /* прочитано или записано блоков (не используется) */
               comp_t    ac_minflt;    /* промахи для вспомогательных страниц */
               comp_t    ac_majflt;    /* промахи для главных страниц */
               comp_t    ac_swaps;     /* количество подкачек (не используется) */
               u_int32_t ac_exitcode;  /* код завершения процесса
                                          (см. wait(2)) */
               char      ac_comm[ACCT_COMM+1];
                                       /* имя команды (basename от последней
                                          исполнявшейся команды; завершается null) */
               char      ac_pad[X];    /* байты заполнения */
           };

           enum {                      /* биты для поля ac_flag */
               AFORK = 0x01,           /* был выполнен fork, но не exec */
               ASU   = 0x02,           /* использовались права суперпользователя */
               ACORE = 0x08,           /* создан файл core */
               AXSIG = 0x10            /* завершён по сигналу */
           };

       Тип данных 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
       Since  Linux 2.6.8, an optional alternative version of the accounting file can be produced
       if the CONFIG_BSD_PROCESS_ACCT_V3 option is set  when  building  the  kernel.   With  this
       option  is  set, the records written to the accounting file contain additional fields, and
       the width of c_uid and ac_gid fields is widened from 16 to  32  bits  (in  line  with  the
       increased  size  of  UID  and  GIDs  in  Linux 2.4 and later).  The records are defined as
       follows:

           struct acct_v3 {
               char      ac_flag;      /* флаги */
               char      ac_version;   /* всегда равно ACCT_VERSION (3) */
               u_int16_t ac_tty;       /* управляющий терминал */
               u_int32_t ac_exitcode;  /* код завершения процесса
               u_int32_t ac_uid;       /* реальный ID пользователя */
               u_int32_t ac_gid;       /* реальный ID группы */
               u_int32_t ac_pid;       /* ID процесса */
               u_int32_t ac_ppid;      /* ID родительского процесса */
               u_int32_t ac_btime;     /* время создания процесса
               float     ac_etime;     /* прошедшее время */
               comp_t    ac_utime;     /* время работы ЦП в пользовательском режиме */
               comp_t    ac_stime;     /* время работы ЦП в системном режиме */
               comp_t    ac_mem;       /* среднее количество использованной памяти (КБ) */
               comp_t    ac_io;        /* передано символов (не используется) */
               comp_t    ac_rw;        /* прочитано или записано блоков
                                       (не используется) */
               comp_t    ac_minflt;    /* промахи для вспомогательных страниц */
               comp_t    ac_majflt;    /* промахи для главных страниц */
               comp_t    ac_swaps;     /* количество подкачек (не используется) */
               char      ac_comm[ACCT_COMM]; /* имя команды */
           };

ВЕРСИИ

       The acct_v3 structure is defined since glibc 2.6.

СТАНДАРТЫ

       Учёт процессов возник в BSD. Хотя он есть в большинстве систем, он  не  стандартизован,  и
       параметры разнятся между системами.

ЗАМЕЧАНИЯ

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

       Up  to  and including Linux 2.6.9, a separate accounting record is written for each thread
       created using the NPTL threading library; since Linux 2.6.10, a single  accounting  record
       is written for the entire process on termination of the last thread in the process.

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

СМ. ТАКЖЕ

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

ПЕРЕВОД

       Русский   перевод   этой   страницы   руководства   был   сделан    Dmitry    Bolkhovskikh
       <d20052005@yandex.ru> и Yuri Kozlov <yuray@komyakino.ru>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.