ACCT(4)
НАЗВАНИЕ
acct - формат файла с информацией о процессах
СИНТАКСИС
#include <sys/acct.h>
ОПИСАНИЕ
Файлы, которые образуются системным вызовом acct(2),
содержат записи следующей структуры, определенной во
включаемом файле <sys/acct.h>:
typedef ushort comp_t; /* "Вещественное число": 13 бит
мантисса, 3 бита порядок */
struct acct {
char ac_flag; /* Флаг учетной информации */
char ac_stat; /* Код завершения */
ushort ac_uid;
ushort ac_gid;
dev_t ac_tty;
time_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; /* Общее число прочитанных и за-
писанных блоков */
char ac_comm[8]; /* Имя команды */
};
extern struct acct acctbuf;
extern struct inode *acctp; /* Описатель файла учетной
информации */
#define AFORK 01 /* Выполнен fork, но не exec */
#define ASU 02 /* Привилегии суперпользователя */
#define ACCTF 0300 /* Тип записи: 00 = acct */
В поле ac_flag флаг AFORK устанавливается при каждом
вызове fork(2) и сбрасывается при вызове exec(2). Поле
ac_comm наследуется от родительского процесса и сбрасывается при exec(2). Каждый раз, когда система выделяет
процессу квант времени, она также добавляет к ac_mem
текущий размер процесса, вычисляемый как
(размер сегмента данных) + (размер сегмента команд) /
(количество процессов в памяти, использующих этот сегмент команд)
Значение ac_mem/(ac_stime+ac_utime) может служить хорошим приближением среднего размера процесса, с учетом
разделения сегмента команд.
Следующая структура используется различными командами
работы с учетной информацией:
/* Общая учетная информация за некоторый период */
struct tacct {
uid_t ta_uid; /* Идент. пользователя */
char ta_name[8]; /* Входное имя */
float ta_cpu[2]; /* Среднее время ЦП в
минутах */
float ta_kcore[2]; /* Среднее значение
килобайтоминут */
float ta_con[2]; /* Среднее астрономичес-
кое время выполнения
в минутах */
float ta_du; /* Суммарное использова-
ние диска */
long ta_pc; /* Число процессов */
unsigned short ta_sc; /* Число сеансов раб. */
unsigned short ta_dc; /* Число дисковых прими-
тивов */
unsigned short ta_fee; /* Для спец. применений
*/
};
СМ. ТАКЖЕ
acct(2), exec(2), fork(2).
acctcom(1) в Справочнике пользователя.
СЮРПРИЗЫ
Значение поля ac_mem для быстро заканчивающихся команд
дает мало информации о реальном размере команды.