Вот мой инкронтаб (инкронтаб Тони):
/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
В этот момент,
- остановить службу
- измените скрипт так, чтобы он не изменял файлы в отслеживаемой папке
- перезапустить службу