inotifywait
Sambaバージョン4.3.9 - Ubuntu on Linux(バージョン3.14)と共有されているフォルダを監視しています。
LinuxシステムのファイルをSamba共有(つまり、他のシステム、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
ご覧のとおり、パス内のスペースでも機能します。