1
我的應用程序從SFTP獲取文件並開始處理它。我有一個cron作業,它被設置爲5分鐘。假設文件到達SFTP,拉動操作獲取文件並開始處理其中的記錄.Howerver處理時間更是如此,5分鐘後cronjob再次拉第二個文件,發現第一個文件正在處理並暫停。處理Cron作業
如何處理這種情況。 請幫助。
我的應用程序從SFTP獲取文件並開始處理它。我有一個cron作業,它被設置爲5分鐘。假設文件到達SFTP,拉動操作獲取文件並開始處理其中的記錄.Howerver處理時間更是如此,5分鐘後cronjob再次拉第二個文件,發現第一個文件正在處理並暫停。處理Cron作業
如何處理這種情況。 請幫助。
如果您不能絕對確定它們的運行時間不會超過它們之間的時間間隔,請不要對應用程序使用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/*
。
如果你不能改變你的cron作業不停止,那麼你的程序應該在處理之前將文件移動到其他地方,我想 – Leo 2014-09-10 12:15:42
你應該有一些標誌來處理這些情況。例如,你可以在'/ tmp/myscript'中創建一個虛假的空文件,一旦第一個cronjob完成,它就會被刪除。 – fedorqui 2014-09-10 13:28:47