Man page - acct(5)

Packages contains this manual

Available languages:

en fr es pl ja ru ro zh_TW zh_CN de

Manual

acct

НАИМЕНОВАНИЕ
ОБЗОР
ОПИСАНИЕ
Формат файла учёта процессов версии 3
ВЕРСИИ
СТАНДАРТЫ
ИСТОРИЯ
ПРИМЕЧАНИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

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

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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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