2014-06-09 86 views
0

我已經在Ubuntu 10.04服務器上設置了一個bash腳本,該腳本在該服務器的./incoming/目錄中創建PDF時生成新的PDF,新的PDF創建在./outgoing/文件夾中。這兩個文件夾都在本地計算機上,並與samba 3.4.7共享。該腳本使用inotifywait來觀察傳入的目錄(根據Script to monitor folder for new files)。共享文件夾上的ionotifywait

inotifywait -m ./incoming/ -e create -e moved_to | 
    while read path action file; do 
     echo "The file '$file' appeared in directory '$path' via '$action'" 
     # Generate PDF using $file into ./outgoing/ 
    done 

當我複製一個文件或者使用bash或Windows資源管理器也能正常工作,但是當我在Windows拯救微軟的Outlook(或Word)一test.pdf附件7客戶端,我收到了幾個激活;

The file './in/test.pdf' appeared in directory './incoming/' via 'CREATE' 
The file './in/B90C4C41.tmp' appeared in directory './incoming/' via 'CREATE' 
The file './in/BE5AC54E.tmp' appeared in directory './incoming/' via 'MOVED_TO' 
The file './in/test.pdf' appeared in directory './incoming/' via 'MOVED_TO' 

爲什麼這樣做?我怎樣才能防止它?或者我應該用sleep解決它並忽略.tmp文件?

回答

0

只是忽略非PDF文件,因爲您可能無法對目錄中創建的臨時文件執行任何操作。

while read path action file; do 
    [[ $file = *.pdf ]] || continue 
    echo "..." 
done