使用linux flock 檔案鎖實現任務鎖定,解決衝突
格式:flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command
flock --help
flock (util-linux-ng 2.17.2)
usage: flock [-sxun][-w #] fd#
flock [-sxon][-w #] file [-c] command...
flock [-sxon][-w #] directory [-c] command...
-s --shared get a shared lock
-x --exclusive get an exclusive lock
-u --unlock remove a lock
-n --nonblock fail rather than wait
-w --timeout wait for a limited amount of time
-o --close close file descriptor before running command
-c --command run a single command string through the shell
-h --help display this text
-v --version display version
-s, --shared: 獲得乙個共享鎖
-x, --exclusive: 獲得乙個獨佔鎖
-u, --unlock: 移除乙個鎖,通常是不需要的,指令碼執行完會自動丟棄鎖
-n, --nonblock: 如果沒有立即獲得鎖,直接失敗而不是等待
-w, --timeout: 如果沒有立即獲得鎖,等待指定時間
-o, --close: 在執行命令前關閉檔案的描述符號。用於如果命令產生子程序時會不受鎖的管控
-c, --command: 在shell中執行乙個單獨的命令
-h, --help 顯示幫助
-v, --version: 顯示版本
example: crontab運用flock防止重複執行
touch /tmp/my.lock # 建立乙個鎖檔案
*/30 * * * * loki flock -xn /tmp/my.lock -c 'sh 你的指令碼檔案.sh' # -n 為非阻塞模式,會等一直等待程式執行完畢後再執行
解決問題:
防止某個指令碼沒有執行完畢的同時又另外的指令碼再次啟動
linux使用flock檔案鎖
使用linux flock 檔案鎖實現任務鎖定,解決衝突 格式 flock sxun w fd flock sxon w file c command flock help flock util linux ng 2.17.2 usage flock sxun w fd flock sxon w f...
linux使用flock檔案鎖解決指令碼重複執行問題
linux的crontab命令,可以定時執行操作,最小週期是每分鐘執行一次。關於crontab實現每秒執行可參考我之前的文章 linux crontab 實現每秒執行 現在有個問題,如果設定了任務每分鐘執行一次,但有可能一分鐘內任務並沒有執行完成,這時系統會再執行任務。導致兩個相同的任務在執行。例如...
linux的flock命令 檔案鎖
mysql,如果多個請求同時,請求操作乙個表,乙個存,乙個讀,就會造成髒讀.所以有了事務,有了鎖表 linux在多個程序同時操作同一份檔案的時候,很容易導致檔案混亂,這時候就需要鎖,來保證檔案的完成性.flock主要三種操作型別 lock sh,常被用作讀共享鎖 lock ex,只能被乙個進行使用,...