이것은 내 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 -n
Tony의 incrontab은 전경에서 incrond()를 실행하면 작동합니다.
루트의 incrontab을 위에 주어진 값으로 설정하면 서비스로 실행될 때에도 작동합니다.
내 Tony는 다음 위치에 있습니다 /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
이 지점에서,
- 서비스 중단
- 감시 폴더의 파일을 수정하지 않도록 스크립트를 변경하세요.
- 서비스 다시 시작