2013-04-12 66 views
0

我有一個腳本寫入文件,然後將該文件轉儲到數據庫。我需要這個任務儘可能頻繁地運行,但絕不會在同一時間運行超過實例(或者將冗餘的東西寫入同一個文件)。計劃磁盤掃描

我現在正在做的是在shell腳本中我正在檢查文件是否存在,如果存在,我退出腳本。在每個腳本的末尾它刪除文件。

這工作95%的時間。但是,如果服務器重新啓動(發生頻率爲半頻率),則正在寫入的文件將保留,每次腳本被調用後,都將退出,因爲該文件已存在。

什麼是解決此問題的好方法?

+0

如何在每次重新啓動時在crontab上安排文件comprobation?這是'@重啓'條件 – fedorqui

+0

請參閱[此問題](http://stackoverflow.com/questions/185451/quick-and-dirty-way-to-ensure-only-one-instance-of-a-shell -script-is-running-at)這簡直就是你的條件 – Petesh

回答

0

您可以檢查是否有任何進程正在使用「fuser」文件。它將使用該文件返回任何程序的PID。如果沒有PIDS,您可以安全地擦拭並重新開始。

+0

謝謝,grep或fuser命令將檢查用戶是否在使用文件「example.txt」根」 ? – David542

+0

「fuser example.txt」 雖然總是最好包含文件的完整路徑 – Tony