.\" -*- 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 "2 мая 2024 г." "Справочные страницы Linux 6.9.1" .SH НАИМЕНОВАНИЕ acct \- файл программы учёта процессов .SH ОБЗОР .nf \fB#include \fP .fi .SH ОПИСАНИЕ Если ядро собрано с включённым параметром учёта процессов (\fBCONFIG_BSD_PROCESS_ACCT\fP), то системный вызов \fBacct\fP(2) запустит программу учёта процесса: .P .in +4n acct("/var/log/pacct"); .in .P При включённой программе учёта процессов, ядро делает запись в файл учёта по каждому процессу системы по его завершении. Эта запись содержит информацию о завершённом процессе и определена в \fI\fP следующим образом: .P .in +4n .EX #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[\fIX\fP]; /* 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 */ }; .EE .in .P Тип данных \fIcomp_t\fP \- число с плавающей точкой, состоящее из 3\-разрядной экспоненты по основанию 8 и 13\-разрядной мантиссы. Переменная \fIc\fP этого типа может быть преобразована к целому числу (long) следующим образом: .P .nf v = (c & 0x1fff) << (((c >> 13) & 0x7) * 3); .fi .P Поля \fIac_utime\fP, \fIac_stime\fP и \fIac_etime\fP хранят время в "тактах часов"; для преобразования в секунды нужно разделить значения на \fIsysconf(_SC_CLK_TCK)\fP. .SS "Формат файла учёта процессов версии 3" Начиная с ядра версии 2.6.8, можно создавать файл учёта альтернативной версии, если задать параметр \fBCONFIG_BSD_PROCESS_ACCT_V3\fP при сборке ядра. Если этот параметр установлен, то записи, сохранённые в файле учёта, будут содержать дополнительные поля, а ширина полей \fIc_uid\fP и \fIac_gid\fP будет расширена с 16 до 32 бит (для соответствия с увеличенным размером UID и GID в Linux 2.4 и позже). Записи определены следующим образом: .P .in +4n .EX 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 */ }; .EE .in .SH ВЕРСИИ Хотя файл учёта процессов присутствует в большинстве систем, он не стандартизирован и подробности в разных системах несколько различаются. .SH СТАНДАРТЫ Отсутствуют. .SH ИСТОРИЯ glibc 2.6. .P Программа учета процессов была разработана в BSD. .SH ПРИМЕЧАНИЯ Записи в файле учёта упорядочены по времени завершения процессов. .P Вплоть до Linux 2.6.9, включительно, для каждого потока, созданного с использованием библиотеки многопоточности NPTL, создавалась отдельная учетная запись. Начиная с Linux 2.6.10, при завершении последнего потока в процессе, записывается отдельная учетная запись для всего процесса. .P В файле \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 , Aleksandr Felda и Kirill Rekhov . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .