Главная » 2017 » Ноябрь » 19 » man 5 acct
19:26
man 5 acct

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


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);

определены следующим образом:

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]; /* имя команды */
};



ВЕРСИИ


Структура acct_v3 определена в glibc начиная с версии 2.6.



СООТВЕТСТВИЕ СТАНДАРТАМ


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



ЗАМЕЧАНИЯ


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

В ядрах до версии 2.6.9 включительно, с помощью библиотеки нитей NPTL для каждой
нити сохранялась своя запись учёта; начиная с Linux 2.6.10 отдельная запись
сохраняется для всего процесса при завершении работы его последней нити.

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



СМОТРИТЕ ТАКЖЕ


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



Категория: (5) Форматы файлов и соглашения | Просмотров: 440 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar