Linux下面Crontab文件鎖實現進程互斥

這個方案目前已經是比較成熟,主要是結合flock來實現,這裏做一下記錄。

理論基礎

實現格式:
flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command...

常用選項如下:
-s, --shared:獲得一個共享的鎖。
-x, --exclusive:獲得一個獨佔的鎖。
-u, --unlock:移除一個鎖,通常是不需要的,腳本執行完後會自動丟棄鎖。
-n, --nonblock:如果沒有立即獲得鎖直接失敗而不是等待。
-w, --timeout:如果沒有立即獲得鎖就等待指定的時間。
-o, --close:在運行命令前關閉文件的描述符。用於如果命令產生子進程時會不受鎖的管控。
-c, --command:在shell中運行一個單獨的命令。
-h, --help:顯示幫助。
-V, --version:顯示版本。

具體實現

如下面的實例,原計劃每5秒執行一次test腳本,同時產生test.lock文件,如果5秒時間前一個進程沒有執行完,後面一個進程發起了,便會放棄本次操作。

*/5 * * * * flock -x -n /tmp/test.lock -c '/test.sh'

每天進步一點點,更多精彩內容,歡迎關注公衆號“編程社”!!!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章