내 incrontab은 다음과 같습니다(tony의 incrontab).
/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
Tony의 incrontab이 작동합니다.
루트의 incrontab을 위와 같이 설정하면 서비스로 실행해도 작동합니다.
내 토니는 다음 위치에 있습니다 /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
이 지점에서,
- 서비스를 중지하다
- 감시 폴더 내의 파일을 수정하지 않도록 스크립트를 변경하십시오.
- 서비스를 다시 시작하세요