ACCT(2) ACCT(2)
НАЗВАНИЕ
acct - включение/выключение режима сбора статистической
информации о процессах
СИНТАКСИС
int acct (path)
char *path;
ОПИСАНИЕ
Системный вызов acct используется для включения/выклю-
чения режима сбора статистической информации о процес-
сах. Если режим включен, то для каждого завершившегося
процесса в файл сбора статистики помещается соответст-
вующая запись. Завершение выполнения процесса может
произойти с помощью системного вызова exit или из-за
получения сигнала [см. exit(2) и signal(2)]. Системный
вызов acct доступен только суперпользователю.
Аргумент path указывает на маршрутное имя файла сбора
статистики. Формат файла сбора статистики описан в
acct(4).
Режим сбора статистики включается, если значение аргу-
мента path не равно 0, и не произошло ошибок во время
выполнения системного вызова. Режим сбора статистики
выключается, если значение path равно 0, и не произошло
ошибок во время выполнения системного вызова.
Системный вызов acct завершается неудачей, если выпол-
нено хотя бы одно из следующих условий:
[EPERM] Пользователь вызывающего процесса не явля-
ется суперпользователем.
[EBUSY] Попытка включить режим сбора статистики,
когда он уже включен.
[ENOTDIR] Компонент маршрутного префикса не является
каталогом.
[ENOENT] Компонент в маршрутном имени файла сбора
статистики не существует.
[EACCES] Файл, заданный аргументом path, не является
обычным файлом.
[EROFS] Указанный файл находится в файловой системе
с доступом к файлам только по чтению.
[EFAULT] Аргумент path задает недопустимый адрес.
СМ. ТАКЖЕ
exit(2), signal(2), acct(4).
ДИАГНОСТИКА
При успешном завершении результат равен 0; в случае
ошибки возвращается -1, а переменной errno присваивает-
ся код ошибки.
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 для быстро заканчивающихся команд
дает мало информации о реальном размере команды.
ACCT(1M) ACCT(1M)
НАЗВАНИЕ
acct: acctdisk, acctdusg, accton, acctwtmp - обзор воз-
можностей сбора статистики
СИНТАКСИС
/usr/lib/acct/acctdisk
/usr/lib/acct/acctdusg [-u файл1] [-p файл2]
/usr/lib/acct/accton [файл]
/usr/lib/acct/acctwtmp "причина"
ОПИСАНИЕ
Для сбора статистики предоставляется ряд утилит, среди
которых имеются как C-программы, так и shell процедуры;
описанию последних посвящена статья acctsh(1M). Основы-
ваясь на этих утилитах, можно создать статистическую
службу, приспособленную к нуждам конкретной вычисли-
тельной установки.
Сведения о времени начала/конца сеансов помещаются раз-
личными программами в файл /etc/utmp, формат которого
описан в utmp(4). Утилиты группы acctcon(1M) преобразу-
ют эти сведения в записи о сеансах и об использовании
таких ресурсов, как терминальные линии; затем с помощью
утилиты acctmerg(1M) можно получить итоговый отчет.
Сбор информации о процессах осуществляется ядром ОС
UNIX. При завершении процесса в файл (обычно /usr/adm/
pacct) добавляется одна запись. Утилиты, описанные в
acctprc(1M), выдают сводную информацию; утилита
acctcms(1M) служит для получения статистики использова-
ния команд. Сведения о процессах, завершившихся недав-
но, можно запросить с помощью команды acctcom(1).
Утилита acctmerg позволяет получить сводную информацию
не только о процессах и о сеансах работы пользователей;
она пригодна для обработки любых файлов, записи в кото-
рых имеют формат acct [см. acct(4)]. Генерируемая свод-
ная информация состоит из записей типа tacct [см
acct(4)]. Для форматирования и вывода сводок служит
процедура prtacct [см. acctsh(1M)].
Утилита acctdisk читает со стандартного ввода строки,
содержащие идентификатор пользователя, его входное имя,
количество дисковых блоков, преобразует эти строки в
формат сводной информации tacct и выдает результаты на
стандартный вывод. Обычно исходные данные для acctdisk
готовятся с помощью утилит diskusg(1M) или acctdusg, а
результаты используются при подготовке ежедневных сво-
док [см. dodisk и runacct в acctsh(1M)].
Утилита acctdusg читает со стандартного ввода список
полных маршрутных имен файлов (обычно - результат рабо-
ты команды find / -print) и выдает сведения об исполь-
зовании дискового пространства (включая косвенные бло-
ки) различными пользователями. Если указана опция -u,
то в файл1 помещаются записи о тех каталогах, которые
не являются подкаталогами основных каталогов каких-либо
пользователей, на основании чего можно выявить лиц, ук-
лоняющихся от учета дискового пространства. Если указа-
на опция -p, то файл2 рассматривается как файл со све-
дениями о пользователях; по умолчанию используется файл
/etc/passwd [см. также diskusg(1M)].
Утилита accton, будучи вызванной без аргумента, выклю-
чает сбор статистики о процессах. Если файл указан, то
он должен существовать; к этому файлу ядро ОС будет до-
бавлять учетную информацию о процессах [см. acct(2) и
acct(4)].
Утилита acctwtmp помещает на стандартный вывод записи в
формате wtmp(4). Эти записи, получающие тип ACCOUNTING
[см. utmp(4)], содержат текущее время и цепочку симво-
лов, описывающую причину. Причина должна состоять не
более чем из 11 символов, в число которых могут входить
буквы, цифры, знаки $ и пробелы. Например, в процедуре
остановки системы рекомендуется иметь строку вида
acctwtmp "file save" >> /etc/wtmp
ФАЙЛЫ
/etc/passwd Файл со сведениями о пользователях.
/usr/lib/acct Каталог команд сбора статистики.
/usr/adm/pacct Текущий файл сбора статистики о процес-
сах.
/etc/wtmp Файл со сведениями о времени начала/
конца сеансов.
СМ. ТАКЖЕ
acctcms(1M), acctcon(1M), acctmerg(1M), acctprc(1M),
acctsh(1M), diskusg(1M), fwtmp(1M), runacct(1M).
acctcom(1) в Справочнике пользователя.
acct(2), acct(4), utmp(4) в Справочнике программиста.
|