table of contents
- bookworm 4.18.1-1
- bookworm-backports 4.25.1-1~bpo12+1
- testing 4.25.1-1
- unstable 4.25.1-1
acct(5) | File Formats Manual | acct(5) |
НАИМЕНОВАНИЕ¶
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 */ };
ВЕРСИИ¶
Структура acct_v3 определена начиная с glibc 2.6.
СТАНДАРТЫ¶
Программа учета процессов был разработана в BSD. Хотя она присутствует в большинстве систем, эта программа не стандартизирована и детали в разных системах несколько различаются.
ПРИМЕЧАНИЯ¶
Записи в файле учёта упорядочены по времени завершения процессов.
Вплоть до Linux 2.6.9, включительно, для каждого потока, созданного с использованием библиотеки многопоточности NPTL, создавалась отдельная учетная запись. Начиная с Linux 2.6.10, при завершении последнего потока в процессе, записывается отдельная учетная запись для всего процесса.
В файле /proc/sys/kernel/acct, описанном в proc(5), определены настройки, которые управляют поведением учёта процессов при нехватке места на диске.
СМОТРИТЕ ТАКЖЕ¶
ПЕРЕВОД¶
Русский перевод этой страницы руководства разработал(и) 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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
4 декабря 2022 г. | Справочные страницы Linux 6.03 |