腳本單實例運行一般2種做法:
1.腳本內部加判斷邏輯:將某個文件作爲標誌位,文件不存在則執行,文件存在就不執行。
優點:簡單,直觀,很容易理解
缺點:標誌文件因爲異常沒有被刪除的情況下,則機制出現問題;腳本內部增加判斷邏輯,侵入了腳本本身要實現的功能
2.【最優】利用flock:在某個文件上上互斥鎖,上鎖失敗則證明目前有實例在運行,上鎖成功則說明自己是唯一實例
flock -xn /tmp/test.lock -c "do_cmd.sh"
優點:不會出現誤判,腳本專注於本身邏輯即可,不需要冗餘判斷,實現優雅
缺點:理解上比1要稍微難一點