Пользовательский incrontab не работает (только root), когда incrond запущен как служба

Пользовательский incrontab не работает (только root), когда incrond запущен как служба

Вот мой инкронтаб (инкронтаб Тони):

/home/tony/Workspace/cocoonr/ui/static/ui/img/icons/vector IN_MODIFY,IN_CREATE,IN_MOVED_TO /bin/sh /home/tony/Workspace/cocoonr/boilerplate/svg2djangohtml $@/$# /home/tony/Workspace/cocoonr/ui/templates/inc/icons/

Я тестировал его несколько раз, меняя некоторые вещи, но так и не смог заставить его работать, когда incrond запущен как служба (используя openrc).

Если я запускаю incrond на переднем плане ( incrond -n), то incrontab Тони работает

Если я устанавливаю incrontab root на тот, который указан выше, он работает даже при запуске в качестве службы.

Мой Тони в /etc/incron.allow:

root
tony

И нет /etc/incron.deny.

Я даже попробовал использовать гораздо более простой incrontab:

/tmp/foo IN_ATTRIB touch /tmp/bar

Результаты те же.

Как заставить работать incrontab пользователя?

решение1

Если в двоичном файле incrontab (о котором я не знаю, никогда им не пользовался) не установлен бит SGID, это может привести к такому странному поведению.

Установите его с помощью chmod g+s /path/to/binary(может быть, /usr/bin/incrontab?)

Вы можете оценить, установлено ли оно:

ls -l /path/to/binary

(пример)

ls -l /usr/bin/crontab
-rwxr-s--x 1 root crontab 44336 Jun 23 18:47 /usr/bin/crontab

решение2

Я столкнулся с похожей проблемой (именно так я и нашел этот вопрос).

Если следующая команда сработает,

incrontab -n

проблема может быть в том, что служба incron/incrond не запущена. Проверьте, запущена ли она и включена ли для нее возможность запуска при загрузке (в случае перезапуска системы).

Другая проблема, с которой я столкнулся, была из-за бесконечного цикла, который я непреднамеренно создал.
Если ваш скрипт изменяет любой файл в той самой папке, за которой следит incron, он продолжает вызывать события, и каждое событие вызывает новый процесс (через fork()). Вскоре служба больше не может разветвляться. В этом случае журнал службы показывает следующую ошибку.

cannot fork process: resource temporarily unavailable

В этот момент,

  • остановить службу
  • измените скрипт так, чтобы он не изменял файлы в отслеживаемой папке
  • перезапустить службу

Связанный контент