.\" -*- coding: UTF-8 -*- .\" Copyright (C) 2008, Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH acct 5 "4 декабря 2022 г." "Linux man\-pages 6.03" .SH ИМЯ acct \- файл учёта процессов .SH СИНТАКСИС .nf \fB#include \fP .fi .SH ОПИСАНИЕ Если ядро собрано с включённым параметром учёта процессов (\fBCONFIG_BSD_PROCESS_ACCT\fP), то системный вызов \fBacct\fP(2) запустит учёт процесса: .PP .in +4n acct("/var/log/pacct"); .in .PP При включённом учёте процессов, ядро делает запись в файл учёта по каждому процессу системы по его завершении. Эта запись содержит информацию о завершённом процессе и определена в \fI\fP следующим образом: .PP .in +4n .EX #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[\fIX\fP]; /* байты заполнения */ }; enum { /* биты для поля ac_flag */ AFORK = 0x01, /* был выполнен fork, но не exec */ ASU = 0x02, /* использовались права суперпользователя */ ACORE = 0x08, /* создан файл core */ AXSIG = 0x10 /* завершён по сигналу */ }; .EE .in .PP Тип данных \fIcomp_t\fP \(em это число с плавающей точкой, состоящее из 3\-битной экспоненты по основанию 8 и 13\-битной мантиссы. Переменная \fIc\fP этого типа может быть преобразована к целому (long) так: .PP .nf v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3); .fi .PP Поля \fIac_utime\fP, \fIac_stime\fP и \fIac_etime\fP хранят время в "тактах часов"; для преобразования в секунды нужно поделить значение на \fIsysconf(_SC_CLK_TCK)\fP. .SS "Формат файла учёта версии 3" Since Linux 2.6.8, an optional alternative version of the accounting file can be produced if the \fBCONFIG_BSD_PROCESS_ACCT_V3\fP 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 \fIc_uid\fP and \fIac_gid\fP 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: .PP .in +4n .EX 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]; /* имя команды */ }; .EE .in .SH ВЕРСИИ The \fIacct_v3\fP structure is defined since glibc 2.6. .SH СТАНДАРТЫ Учёт процессов возник в BSD. Хотя он есть в большинстве систем, он не стандартизован, и параметры разнятся между системами. .SH ЗАМЕЧАНИЯ Записи в файле учёта упорядочены по времени завершения процессов. .PP 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. .PP В файле \fI/proc/sys/kernel/acct\fP, описанном в \fBproc\fP(5), определены настройки, которые управляют поведением учёта процессов при нехватке места на диске. .SH "СМ. ТАКЖЕ" \fBlastcomm\fP(1), \fBacct\fP(2), \fBaccton\fP(8), \fBsa\fP(8) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Dmitry Bolkhovskikh и Yuri Kozlov . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .