inotifywait는 Linux에서 Samba 공유에 저장하는 Windows 사용자를 모니터링하지 않습니다.

inotifywait는 Linux에서 Samba 공유에 저장하는 Windows 사용자를 모니터링하지 않습니다.

inotifywaitSamba 버전 4.3.9 - Ubuntu on Linux(버전 3.14)와 공유되는 폴더를 모니터링하고 있습니다 .

Linux 시스템의 파일을 삼바 공유(즉, 다른 시스템, Linux에서도)로 복사하면 작동합니다.

그러나 Windows 시스템에서 파일을 복사하면 inotify아무것도 감지되지 않습니다. 결과는 공백이 있든 없든, 재귀적이든 비재귀적이든 동일합니다.

printDir="/media/smb_share/temp/monitor"
inotifywait -m -r -e modify -e create "$printDir" |  while read line
do
    echo "$line"
done

누구든지 문제를 해결하는 방법을 알고 있나요?

답변1

좋아, 이것은 추악한 해결 방법이지만 내가 생각하는 한 약 90%의 경우에 작동할 것입니다.

temPrint=/dev/shm/print
fcheck_1=$temPrint/fcheck_1
fcheck_new=$temPrint/fcheck_new
fcheck_old=$temPrint/fcheck_old
fcheck_preprint=$temPrint/fcheck_preprint
fcheck_print=$temPrint/fcheck_print
printDir="/media/smb_share/temp/monitor"

test -d $temPrint || mkdir $temPrint

while [ true ]; do
  test -e $fcheck_new && rm $fcheck_new
  test -e $fcheck_old || touch $fcheck_old
  test -e $fcheck_print && rm $fcheck_print

  ls -l "$printDir"/*.pdf > $fcheck_1
  while read line
  do
    echo "${line#*"/"}" | sed "s#^#/#" >> $fcheck_new
  done < $fcheck_1

  rt=$(diff $fcheck_new $fcheck_old | grep "<")
  if [ "$rt" ]; then
    echo "$rt" > $fcheck_preprint
    while read line
    do
      echo "${line#*"/"}" | sed "s#^#/#" >> $fcheck_print
    done < $fcheck_preprint

    while read line
    do
      echo "$line"
    done < $fcheck_print

    cp $fcheck_new $fcheck_old
  fi
  sleep 20
done

답변2

당신은 주어야한다파일이 변경되었습니다.기회

방금 Windows에 설치된 CIFS 드라이브를 사용하여 테스트했습니다. 지연이나 서버 부하가 거의 없이 매력적으로 작동합니다.

  • 설치하다:
    sudo apt-get install fileschanged
    
  • 새 파일이나 변경된 파일이 있는지 홈 폴더를 모니터링하세요.
    fileschanged -s created,changed -t1 $PWD
    
  • 출력은 다음과 같습니다.
    /mnt/winshare/DevRep/VMTest/trigger_test1 folder/test3
    /mnt/winshare/DevRep/VMTest/trigger_test1 folder/test3
    /mnt/winshare/DevRep/VMTest/trigger_test1 folder/test4
    

보시다시피 경로 내의 공백에서도 작동합니다.

관련 정보