나는 데비안에서 minidlna를 실행하는 전용 상자를 가지고 있으며, 공유 cifs 드라이브에서 미디어 파일을 가져옵니다.
midia 상자를 사용하지 않고 공유에 새 파일을 추가하면 inotify 이벤트가 생성되지 않기 때문에 minidlna가 새 파일을 인식하지 못합니다.
가끔 미디어 상자에서 터치를 실행하는 새 파일을 인식하도록 하는 해결 방법을 찾았지만 minidlna는 폴더에 대해 IN_CREATE 및 IN_MOVED_TO 이벤트만 인식하고 터치는 파일 폴더 생성에 대해 인식하지 않기 때문에 폴더에서는 작동하지 않습니다. 이러한 이벤트.
그래서 이 "가짜" 이벤트를 생성하는 다른 방법이 있는지, 폴더를 이동하지 않고 폴더에 대해 이러한 이벤트 중 하나를 생성하는 방법을 알고 있는지 궁금합니다.
답변1
CIFS 파일 시스템을 사용하면 mount -o remount
어떻게 되나요 ?
디렉토리가 알림 이벤트를 올바르게 실행하지 않기 때문에 이는 CIFS 구현의 버그처럼 들립니다.
기존 inotify 스트림에 이벤트를 주입하는 방법에 대한 참조를 찾을 수 없습니다. 그렇게 생각해요할 수 있다이는 SystemTap을 사용하여 수행할 수 있지만 실용적이지 않습니다. 더 나은 해결책은 버그 보고서 ReadyMedia
(SourceForge.net의 현재 프로젝트 이름)를 제출하는 것입니다.
SF.net에서 코드를 잠깐 봤는데 notify.c
괜찮아 보였지만 단 30초 만에 시계 추가/제거 코드에서 메모리 누수가 드러났습니다. :( 하지만 디렉터리 알림을 제대로 지원하도록 코드를 수정하는 것은 어렵지 않을 것 같습니다.
답변2
inotify 이벤트를 가짜로 만들고 싶은 파일을 알고 있다면 다음 방법이 도움이 될 수 있습니다.
chmod $(stat -c %a $filePath) $filePath
동일한 속성을 다시 파일에 설정하고 변경 사항은 없지만 inotify가 트리거됩니다.
변경된 특정 파일을 모르는 경우 다음을 fswatch
사용할 수 있습니다.여론 조사 모니터이벤트에 의존하지 않음:
fswatch -r -m poll_monitor $folderPath