Гид по технологиям

Установка и использование incron на Debian 8 (Jessie)

• 6 min read • Linux • Обновлено 22 Nov 2025
Установка incron на Debian 8 — инструкция
Установка incron на Debian 8 — инструкция

Кратко

incron позволяет запускать команды при событиях файловой системы (изменение, создание, удаление и т.д.), а не по расписанию, как cron. В этой инструкции показано, как установить incron на Debian 8, настроить права доступа, создать первые задачи и безопасно эксплуатировать систему с практическими примерами и советами по отладке.

О чём эта статья

  • Установка incron из репозитория Debian
  • Управление правами доступа (/etc/incron.allow и /etc/incron.deny)
  • Формат incrontab и доступные события inotify
  • Практические примеры: перезапуск Apache при изменении конфигурации
  • Безопасность, отладка, альтернативы и чеклисты для ролей

Важное заметка

Не запускайте команды из задания incron, которые записывают в ту же директорию, которую вы мониторите: это приведёт к рекурсивным событиям и может создать нагрузку или цикл.

1. Требования

  • Права администратора (root) в Shell. Все команды в руководстве выполняются от root.
  • Я буду использовать редактор nano; вы можете заменить его на предпочитаемый редактор или установить nano: apt-get install nano.

2. Установка incron

Incron доступен в репозитории Debian, поэтому установите его командой:

apt-get install incron

Процесс установки похож на стандартную установку пакетов apt.

Установка incron на Debian: окно терминала с выводом установки

3. Права доступа и файлы allow/deny

incron использует файлы /etc/incron.allow и /etc/incron.deny по аналогии с ISC cron. Поведение:

  • Если существует /etc/incron.allow, только перечисленные в нём пользователи могут использовать incron.
  • Иначе, если существует /etc/incron.deny, только пользователи, НЕ перечисленные в нём, могут использовать incron.
  • Если ни один файл не существует, то все пользователи могут использовать incron (по умолчанию небезопасно).

Чтобы разрешить root использовать incron, либо удалите /etc/incron.allow (не рекомендуется), либо добавьте в него строку root:

rm -f /etc/incron.allow   # не рекомендуется
nano /etc/incron.allow

Добавьте строку:

root

После корректной настройки файла попытка выполнить incrontab -l не будет выдавать сообщение об отказе в доступе.

4. Основные команды incron

  • Просмотр задач: incrontab -l
  • Редактирование задач: incrontab -e
  • Удаление всех задач текущего пользователя: incrontab -r
  • Просмотр man-страницы: man incrontab и man 5 incrontab

Пример вывода ошибок при отсутствии прав:

server1:~# incrontab -l  
user 'root' is not allowed to use incron  
server1:~#

После добавления root в /etc/incron.allow:

server1:~# incrontab -l  
no table for root  
server1:~#

5. Формат incrontab и события inotify

Строка incrontab имеет формат:

  
  • — файл или директория. Для директории отслеживаются события только для файлов непосредственно в ней (не рекурсивно).
  • — набор событий (см. список ниже).
  • — команда, выполняемая при событии. В команде можно использовать подстановки (см. ниже).

Доступные события (наиболее важные):

IN_ACCESS           File was accessed (read)
IN_ATTRIB           Metadata changed (permissions, timestamps, extended attributes, etc.)
IN_CLOSE_WRITE      File opened for writing was closed
IN_CLOSE_NOWRITE    File not opened for writing was closed
IN_CREATE           File/directory created in watched directory
IN_DELETE           File/directory deleted from watched directory
IN_DELETE_SELF      Watched file/directory was itself deleted
IN_MODIFY           File was modified
IN_MOVE_SELF        Watched file/directory was itself moved
IN_MOVED_FROM       File moved out of watched directory
IN_MOVED_TO         File moved into watched directory
IN_OPEN             File was opened

Дополнительные символы маски:

IN_ALL_EVENTS       Всe вышеуказанные события (битовая маска)
IN_MOVE             IN_MOVED_FROM + IN_MOVED_TO
IN_CLOSE            IN_CLOSE_WRITE + IN_CLOSE_NOWRITE
IN_DONT_FOLLOW      Не разыменовывать символические ссылки
IN_ONESHOT          Мониторить путь только для одного события
IN_ONLYDIR          Срабатывать только если путь — директория
IN_NO_LOOP          Отключает мониторинг до завершения обработки текущего события

Подстановки в :

$$   доллар (символ $)
$@   следимый путь
$#   имя файла, связанного с событием (если есть)
$%   флаги события в текстовом виде
$&   флаги события в числовом виде

Если вы следите за директорией, то $@ — путь директории, а $# — имя файла внутри неё. Если следите за файлом, то $@ — полный путь к файлу, а $# пуст.

6. Быстрый тест wildcards

Чтобы увидеть, как подстановки разворачиваются, добавьте временное правило:

incrontab -e

Добавьте строку:

/tmp/ IN_MODIFY echo "$ $@ $# $% $&"

Затем измените файл в /tmp и посмотрите /var/log/syslog:

tail /var/log/syslog

Вы увидите записи вида:

Sep 16 10:14:35 server1 incrond[1199]: (root) CMD (echo "$ /tmp .hello.txt.swp IN_MODIFY 2")
Sep 16 10:14:39 server1 incrond[1199]: (root) CMD (echo "$ /tmp hello.txt IN_MODIFY 2")

Это показывает, как заменяются $@, $#, $%, $&.

7. Практический пример: перезапуск Apache при изменении конфигурации

Добавим два правила: для основного файла конфигурации и для директории виртуальных хостов:

incrontab -e

Вставьте:

/etc/apache2/apache2.conf IN_MODIFY /usr/sbin/service apache2 restart
/etc/apache2/sites-available/ IN_MODIFY /usr/sbin/service apache2 restart

После этого изменение конфигурации Apache приведёт к перезапуску службы. Для проверки посмотрите /var/log/syslog.

Важно: избегайте того, чтобы выполняемая команда писала в ту же директорию, иначе вы получите цикл событий.

8. Отладка и логирование

  • Логи incron пишутся в /var/log/syslog (или в systemd-journal). Там видно, какая команда была запущена и с какими аргументами.
  • Если задача не запускается, проверьте права в /etc/incron.allow и /etc/incron.deny.
  • Проверьте, что путь в incrontab корректен и существуют бинарники, которые вы вызываете (например, /usr/sbin/service).
  • Тестируйте команды вручную под тем же пользователем, от которого работает incron.

9. Безопасность и жесткие рекомендации

  • Не давайте доступ непроверенным пользователям в /etc/incron.allow.
  • Избегайте запуска необработанных входных данных в командах incron; экранируйте переменные и используйте проверенные скрипты.
  • Не помещайте выполняемые скрипты в директории, которые вы мониторите.
  • Если команда выполняет перезапуск сервисов, добавьте проверку конфигурации перед перезапуском (например, apache2ctl configtest && service apache2 restart).

Пример безопасного правила для Apache:

/etc/apache2/apache2.conf IN_MODIFY /usr/local/sbin/incron-apache-reload.sh

где /usr/local/sbin/incron-apache-reload.sh содержит проверку конфигурации и логирование, а не просто service apache2 restart.

10. Альтернативные подходы и когда incron не подходит

Когда incron не лучшая опция:

  • Если нужен рекурсивный мониторинг большого дерева каталогов — incron не рекурсивен; используйте systemd.path, inotifywait + find/entr или agent-решения.
  • Для аудита безопасности или подробного журналирования доступа лучше использовать auditd.
  • Для реакции на изменения в конфигурации сервисов в современных системах удобны systemd path units (systemd.path) с единицами service.

Альтернативы:

  • inotifywait (из пакета inotify-tools) — утилита для одноразового или скриптового мониторинга.
  • entr — утилита для перезапуска команды при изменении списка файлов.
  • systemd.path — декларативное решение в systemd для запуска unit при изменении файлов.

Краткая ментальная модель: incron — это cron, где «время» заменено «событием файловой системы».

11. Чеклист для ролей

Системный администратор

  • Установить incron: apt-get install incron.
  • Проверить /etc/incron.allow и /etc/incron.deny.
  • Создать надёжные wrapper-скрипты для команд, вызываемых incron.
  • Настроить ротацию логов и мониторинг syslog/journal.

Разработчик/DevOps

  • Тестировать команды отдельно под тем же пользователем.
  • Добавить проверку конфигурации перед перезапуском сервиса.
  • Избегать записи в мониторимую директорию.

Оператор/QA

  • Создать тестовые файлы и проверить, что событие срабатывает и команда выполняется.
  • Проверить, что нет «петель» записей в мониторимую директорию.

12. Мини-процедура внедрения (SOP)

  1. Установить incron.
  2. Добавить в /etc/incron.allow только необходимых пользователей.
  3. Создать wrapper-скрипты в /usr/local/sbin с проверками и логированием.
  4. Добавить правила через incrontab -e.
  5. Протестировать изменения и мониторить /var/log/syslog.
  6. Документировать правила и ответственных.

13. Примеры шаблонов и тестовые случаи

Шаблон безопасной команды перезапуска Apache:

/usr/local/sbin/incron-apache-reload.sh

Содержимое /usr/local/sbin/incron-apache-reload.sh (пример):

#!/bin/sh
LOG=/var/log/incron-apache-reload.log
date >> $LOG
if apache2ctl configtest >/dev/null 2>&1; then
  echo "Config OK, restarting" >> $LOG
  service apache2 restart >> $LOG 2>&1
else
  echo "Config test failed, not restarting" >> $LOG
fi

Тестовые случаи:

  • Изменить /etc/apache2/apache2.conf — ожидать перезапуск (и запись в лог).
  • Создать временный файл в мониторимой директории — убедиться, что временные файлы не запускают нежелательных действий.
  • Убедиться, что запись в мониторимую директорию от wrapper-скрипта не создаёт цикла.

14. Матрица рисков и смягчения

  • Риск: несанкционированный доступ к incron — Смягчение: ограничить /etc/incron.allow.
  • Риск: цикл событий из-за записи в мониторируемую директорию — Смягчение: писать логи в отдельную директорию или в /var/log.
  • Риск: некорректная конфигурация вызывает постоянные рестарты — Смягчение: всегда вызывать configtest перед рестартом.

15. Критерии приёмки

  • incron установлен и работает под нужным пользователем.
  • /etc/incron.allow содержит только уполномоченных пользователей.
  • Для каждого правила существует wrapper-скрипт с проверками.
  • Логи записываются и проверены при тестовых изменениях.

16. Глоссарий (1 строка термина)

  • inotify: ядровой интерфейс Linux для уведомлений о событиях файловой системы.
  • incron: демон и утилиты, которые запускают команды при событиях inotify.
  • incrontab: файл задач incron, аналог crontab.

17. Полезные ссылки

Итог

incron — удобный инструмент для реактивного управления системой на основе событий файловой системы. Он прост в установке и настройке, но требует аккуратной политики доступа и тестирования wrapper-скриптов, чтобы избежать циклов и проблем с производительностью.

Ключевые действия: установить пакет, настроить /etc/incron.allow, писать безопасные wrapper-скрипты и тестировать правила через /var/log/syslog.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро