Incrontab настроен на мониторинг прибл. 10 справочников. Единственное, что он делает, это то, что запускает сценарий Bash при получении нового файла в одном из этих каталогов. Примерно каждые 5 минут в каждый каталог приходит один файл. Однако инкронд иногда останавливается. Нет правила, когда это произойдет. Это варьируется от нескольких раз в неделю до нескольких раз в месяц. Регистрируемая ошибка:
incrond[35203]: *** unhandled exception occurred ***
incrond[35203]: polling failed
incrond[35203]: error: (11) Resource temporarily unavailable
incrond[35203]: stopping service
Я знаю, что не опубликовал много информации. Однако система закрыта, поэтому я поделился тем, что мог. Я не ищу прямого ответа (поскольку вопрос может быть слишком широким). Я ищу идеи, которые могу исследовать. Что могло быть причиной такого поведения? Что я должен проверить? Какие ресурсы мне следует проверить?
incrond
использует уровень ядра inotify
подсистема, инкапсулирующая inotify
Интерфейс на основе C в контейнере C ++. Взглянуть на исходные файлы incrond, похоже, что возникшая ошибка связана с неудачным опросом файлового дескриптора, инкапсулированного в incrond
Класс C ++:
int res = опрос (изд. GetPollData (), изд. GetSize (), -1);
if (res > 0) {
ed.ProcessEvents();
}
else if (res < 0) {
switch (errno) {
case EINTR: // syscall interrupted - continue polling
break;
case EAGAIN: // not enough resources - wait a moment and try again
syslog(LOG_WARNING, "polling failed due to resource shortage, retrying later...");
sleep(POLL_EAGAIN_WAIT);
break;
default:
throw InotifyException("polling failed", errno, NULL);
}
}
Трудно определить точную причину неудачного опроса. Наиболее частыми причинами могут быть:
incrond
функцииВ любом случае, сколько файлов существует в ваших контролируемых каталогах?
Использовать strace
по команде, ведение журнала в файл и установка ротации файла журнала в зависимости от того, как часто вы замечаете, что произошел сбой.
например, если вам понадобится неделя, чтобы обнаружить, что это не удалось, ротацию вашего журнала необходимо сохранить в течение 7 дней (или больше). Если вы в целом знаете, что в течение часа, то от 6 до 10 часов ротации почасовых журналов должно быть достаточно.
Подробнее об этом и примеры: http://www.thegeekstuff.com/2011/11/strace-examples