ACCT(4) ACCT(4) НАЗВАНИЕ acct - формат файла с информацией о процессах СИНТАКСИС |#include ОПИСАНИЕ Файлы, которые образуются системным вызовом acct(2), содержат записи следующей структуры, определенной во включаемом файле : |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 для быстро заканчивающихся команд дает мало информации о реальном размере команды.