Aqui está meu incrontab (incrontab de Tony):
/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/
Eu testei várias vezes mudando algumas coisas, não há como fazê-lo funcionar quando o incrond é executado como um serviço (usando openrc).
Se eu executar o incrond em primeiro plano ( incrond -n
), então o incrontab do Tony funciona
Se eu definir o incrontab do root como o fornecido acima, ele funcionará mesmo quando executado como um serviço.
Meu Tony está em /etc/incron.allow
:
root
tony
E não há /etc/incron.deny
.
Eu até tentei com um incrontab muito mais simples:
/tmp/foo IN_ATTRIB touch /tmp/bar
Os resultados são os mesmos.
Como fazer o incrontab do usuário funcionar?
Responder1
Se o binário do incrontab (que não conheço, nunca usei) não tiver seu bit SGID definido, isso pode causar esse tipo de comportamento estranho.
Configure-o com chmod g+s /path/to/binary
(/usr/bin/incrontab, talvez?)
Você pode avaliar se está definido por:
ls -l /path/to/binary
(exemplo)
ls -l /usr/bin/crontab
-rwxr-s--x 1 root crontab 44336 Jun 23 18:47 /usr/bin/crontab
Responder2
Enfrentei um problema semelhante (foi assim que encontrei esta pergunta).
Se o comando a seguir fizer funcionar,
incrontab -n
o problema pode ser que o serviço incron/incrond não esteja em execução. Verifique se ele está rodando e se está habilitado para rodar na inicialização (caso o sistema seja reiniciado).
O outro problema que enfrentei foi por causa de um loop infinito que criei inadvertidamente.
Se o seu script modificar qualquer arquivo na mesma pasta que o incron está monitorando, ele continuará acionando eventos e cada evento causará um novo processo (via fork()
). Em breve, o serviço não poderá mais desembolsar. O log de serviço mostra o seguinte erro neste caso.
cannot fork process: resource temporarily unavailable
Neste ponto,
- parar o serviço
- altere o script para que ele não modifique os arquivos dentro da pasta monitorada
- reinicie o serviço