При работе с системой учета ресурсов вы можете столкнуться с ошибками нескольких типов. Некоторые из них связаны с принадлежностью файла и правами доступа к файлу.
В данном разделе описаны способы исправления основных неполадок при учете ресурсов:
У вас должны быть права пользователя root или члена группы adm.
Для применения системы учета ресурсов нужно задать права доступа к файлу и владельца файла. Команды и сценарии учета ресурсов относятся к административной группе adm, за исключением команды /var/adm/acct/accton, которая принадлежит пользователю root.
ls -l /var/adm/acct -rws--x--- 1 adm adm 14628 Mar 19 08:11 /var/adm/acct/fiscal -rws--x--- 1 adm adm 14628 Mar 19 08:11 /var/adm/acct/nite -rws--x--- 1 adm adm 14628 Mar 19 08:11 /var/adm/acct/sum
cd /var/adm/acct
chown adm sum/* nite/* fiscal/*
Отключите разрешение на запись для всех остальных пользователей. Установите в качестве владельца файла accton группу adm и установите для него права доступа 710, то есть отключите все права доступа для остальных пользователей. Процессы, относящиеся к группе adm, смогут выполнять команду accton, а все остальные пользователи - нет.
/var/adm/acct/startup: /var/adm/wtmp: Доступ запрещен
Для того чтобы изменить принадлежность файла /var/adm/wtmp, установите в качестве его владельца группу adm с помощью следующей команды:
chown adm /var/adm/wtmp
Во время обработки файла /var/adm/wtmp пользователю root может быть отправлено несколько предупреждений. Файл wtmp содержит информацию, полученную процессами /etc/init и /bin/login. Этот файл применяется сценариями учета ресурсов для определения продолжительности работы пользователей в системе. К сожалению, программа обработки файла wtmp не рассчитана на изменение даты. В результате команда runacct отправляет пользователям root и adm сообщение со списком ошибок, возникших с момента последнего изменения даты, то есть с момента последнего запуска подсистемы учета ресурсов.
Команда acctcon1 выдает сообщения об ошибках, которые передаются adm и root командой runacct. Например, если процесс acctcon1 приостановился после изменения даты и не собрал информацию о времени соединения, то adm может получить электронное сообщение приблизительно следующего содержания:
Mon Jan 6 11:58:40 CST 1992 acctcon1: bad times: old: Tue Jan 7 00:57:14 1992 new: Mon Jan 6 11:57:59 1992 acctcon1: bad times: old: Tue Jan 7 00:57:14 1992 new: Mon Jan 6 11:57:59 1992 acctcon1: bad times: old: Tue Jan 7 00:57:14 1992 new: Mon Jan 6 11:57:59 1992
/usr/sbin/acct/wtmpfix wtmp
Команда wtmpfix проверяет файл wtmp на согласованность системной даты и времени и исправляет неполадки, которые могут вызвать сбой при выполнении команды acctcon1. Тем не менее, команда wtmpfix не учитывает некоторые изменения даты. См. раздел Исправление ошибок в wtmp.
Выполнение команды runacct в это время позволит минимизировать число записей с неверными значениями времени. Команда runacct будет отправлять электронные сообщения в файл учета ресурсов root и adm, пока вы не отредактируете сценарий runacct. Найдите в сценарии раздел WTMPFIX и установите символ комментария в строке, которая управляет отправкой файла протокола пользователям root и adm.
Команда runacct часто обрабатывает файлы очень большого размера. Для этого необходимо несколько раз просматривать определенные файлы, что потребляет значительные ресурсы системы. Именно поэтому команда runacct обычно выполняется рано утром, когда она может получить все необходимые ресурсы, не влияя на работу пользователей.
Команда runacct - это сценарий, разделенный на несколько этапов. После завершения каждого этапа выполнение команды можно приостановить, а затем снова возобновить с прерванного места.
Если во время выполнения runacct возникает неполадка, то целевое устройство, в которое отправляются сообщения об ошибке, зависит от этапа, на котором произошла ошибка. Обычно дата и сообщение отправляются на консоль. В сообщении говорится, что нужно просмотреть файл activeММДД (например, active0621 за 21 июня), расположенный в каталоге /usr/adm/acct/nite. Если команда runacct преждевременно завершает работу, то весь файл active помещается в файл activeММДД, к которому добавляется сообщение с описанием неполадки.
Примечания:
- Аббревиатура MMDD означает месяц и день, например, 0102 соответствует 2 января. Если во время выполнения процесса CONNECT1 2 января произойдет неисправимая ошибка, то будет создан файл active0102, содержащий сообщение об ошибке.
- Аббревиатура "сообщение SE" означает стандартное сообщение об ошибке, например:
********* ОШИБКА УЧЕТА РЕСУРСОВ : см. файл active0102 *********
Предварительное состояние и сообщения об ошибках команды runnacct | ||||
Состояние | Команда | Неисправимая? | Сообщение об ошибке | Получатели |
pre | runacct | да | * 2 демона cron или НЕПОЛАДКА УЧЕТА РЕСУРСОВ *ОШИБКА: обнаружена блокировка, выполнение прекращено | консоль, почта, файл active |
pre | runacct | да | runacct: В каталоге /usr недостаточно свободной памяти (nnn блоков); Процедура завершена | консоль, почта, файл active |
pre | runacct | да | сообщение SE; ОШИБКА: для 'дата' уже запущен acctg: проверьте дату последнего изменения | консоль, почта, файл activeММДД |
pre | runacct | нет | * УЧЕТ РЕСУРСОВ СИСТЕМЫ ЗАПУЩЕН* | консоль |
pre | runacct | нет | повторный запуск acctg для 'дата' в состоянии СОСТОЯНИЕ | активная консоль, консоль |
pre | runacct | нет | повторный запуск acctg для 'дата' в состоянии, определяемым аргументом $2, предыдущее состояние - СОСТОЯНИЕ | файл active |
pre | runacct | да | сообщение SE; Ошибка: неверные аргументы команды runacct | консоль, почта, файл activeММДД |
Состояния и сообщения об ошибках команды runacct | ||||
Состояние | Команда | Неисправимая? | Сообщение об ошибке | Получатели |
НАСТРОЙКА | runacct | нет | ls -l fee pacct* /var/adm/wtmp | файл active |
НАСТРОЙКА | runacct | да | сообщение SE; ОШИБКА: переключатель turnacct вернул значение rc=error | консоль, почта, файл activeММДД |
НАСТРОЙКА | runacct | да | сообщение SE; ОШИБКА: Файл SpacctММДД уже существует. Возможно, настройка уже запущена | файл activeММДД |
НАСТРОЙКА | runacct | да | сообщение SE; ОШИБКА: Файл wtmpММДД уже существует: выполните настройку вручную | консоль, почта, файл activeММДД |
WTMPFIX | wtmpfix | нет | сообщение SE; ОШИБКА: просмотрите сообщения об ошибках wtmpfix в файле xtmperrorММДД | файлы activeММДД, wtmperrorММДД |
WTMPFIX | wtmpfix | нет | обработка wtmp завершена | файл active |
CONNECT1 | acctcon1 | нет | сообщение SE; (сообщения об ошибках расположены в протоколе acctcon1) | консоль, почта, файл activeММДД |
CONNECT2 | acctcon2 | нет | соединение acctg завершено | файл active |
ПРОЦЕСС | runacct | нет | ПРЕДУПРЕЖДЕНИЕ: для pacctN учет ресурсов уже запущен | файл active |
ПРОЦЕСС | acctprc1 acctprc2 | нет | команда acctg выполнена для SpacctNММДД | файл active |
ПРОЦЕСС | runacct | нет | выполнены все процессы actg для указанной даты | файл active |
ВСТАВКА | acctmerg | нет | выполнено объединение tacct для создания dayacct | файл active |
FEES | acctmerg | нет | объединенная оплата ИЛИ нет оплаты | файл active |
ДИСК | acctmerg | нет | объединение записей о диске ИЛИ нет записей о диске | файл active |
MERGEACCT | acctmerg | нет | ПРЕДУПРЕЖДЕНИЕ: восстановление sum/tacct | файл active |
MERGEACCT | acctmerg | нет | обновление sum/tacct | файл active |
CMS | runacct | нет | ПРЕДУПРЕЖДЕНИЕ: восстановление sum/cms | файл active |
CMS | acctcms | нет | вычисление итоговых данных завершено | файл active |
ОЧИСТКА | runacct | нет | выполнен учет ресурсов системы, 'дата' | файл active |
ОЧИСТКА | runacct | нет | *УЧЕТ РЕСУРСОВ СИСТЕМЫ ВЫПОЛНЕН* | консоль |
<ошибка> | runacct | да | сообщение SE; ОШИБКА: недопустимое состояние, просмотрите поле СОСТОЯНИЕ | консоль, почта, файл activeММДД |
Примечание: Метка <ошибка> в приведенной выше таблице не соответствует никакому состоянию; она означает, что в файл состояний /usr/adm/acct/nite/statefile было записано неверное состояние.
Список терминов | |
Получатель | Описание |
консоль | Устройство /dev/console |
почта | Сообщение будет отправлено по электронной почте и записано в файл учета ресурсов root и adm |
файл active | Файл /usr/adm/acct/nite/active |
activeММДД | Файл /usr/adm/acct/nite/activeММДД |
wtmperrММДД | Файл /usr/adm/acct/nite/wtmperrorММДД |
СОСТОЯНИЕ | Текущее состояние, указанное в файле /usr/adm/acct/nite/statefile |
fd2log | Любое другое сообщение об ошибке |
Команда acctcon1 (запускаемая из сценария runacct) отправляет сообщение пользователям root и adm, если файл /usr/lib/acct/holidays устарел. Файл holidays считается устаревшим в том случае, если прошел последний указанный праздник или начался новый год.
Обновите устаревший файл holidays, отредактировав файл /var/adm/acct/holidays и указав в нем рабочее и нерабочее время.
Рабочее время - это период, когда система используется наиболее активно, например, рабочие дни. Свободное время для системы учета ресурсов - это суббота и воскресенье, а также все праздники, указанные в файле.
Файл holidays содержит записи трех типов: комментарии, год и рабочее время, а также список праздников, как показано в следующем примере:
*Таблица рабочего и свободного времени для системы учета ресурсов * * Тек. Запуск в Запуск в * год рабочее время нерабочее время 1992 0830 1700 * * День Календарная Название * года дата праздника * * 1 1 Января Новый год * 7 7 Января Рождество * 54 23 Февраля День защитника отечества * 67 8 Марта Международный женский день * 121 1 Мая День труда * 129 9 Мая День победы * 163 12 Июня День независимости * 244 1 Сентября День знаний * 280 7 Октября День Конституции 1977 года * 311 7 Ноября День общественного примирения и согласия * 339 5 Декабря День Конституции 1936 года * 346 12 Декабря День Конституции Российской Федерации * 359 25 Декабря Католическое Рождество
Первая строка без комментария должна задавать текущий год, а также начало и конец рабочего периода времени в виде четырех цифр. Рабочее и нерабочее время влияет только на то, как программа учета ресурсов обрабатывает записи учета ресурсов.
Если список праздников очень длинный, то команда acctcon1 отправит сообщение об ошибке и вам придется его сократить. Список может содержать не более 20 праздников. Для увеличения списка праздников обновляйте файл holidays каждый месяц.