2014-09-10 134 views
1

我的應用程序從SFTP獲取文件並開始處理它。我有一個cron作業,它被設置爲5分鐘。假設文件到達SFTP,拉動操作獲取文件並開始處理其中的記錄.Howerver處理時間更是如此,5分鐘後cronjob再次拉第二個文件,發現第一個文件正在處理並暫停。處理Cron作業

如何處理這種情況。 請幫助。

+1

如果你不能改變你的cron作業不停止,那麼你的程序應該在處理之前將文件移動到其他地方,我想 – Leo 2014-09-10 12:15:42

+0

你應該有一些標誌來處理這些情況。例如,你可以在'/ tmp/myscript'中創建一個虛假的空文件,一旦第一個cronjob完成,它就會被刪除。 – fedorqui 2014-09-10 13:28:47

回答

0

如果您不能絕對確定它們的運行時間不會超過它們之間的時間間隔,請不要對應用程序使用cron作業。使用睡眠!

#!/bin/bash 
while true 
do 
    echo "Press [CTRL+C] to stop.." 
    get_files_from_sftp 
    process_files 
    sleep 5m 
done 

@獅子座的建議可能無法工作,因爲我們沒有對您的申請足夠的細節,它可能不能夠並行運行多次。但試試看吧。

@ fedorqui的建議也不錯。使用mktemp創建唯一的臨時文件,或將pid文件放入/var/run/*