日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

flock文件锁的学习和应用

發布時間:2025/4/5 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flock文件锁的学习和应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

flock文件鎖 學習與應用????

2016-9-20 ??

作用:

  可以使用flock文件鎖,避免指定命令的同時執行。(實現任務鎖定,解決沖突)

用法: ?

  # flock -xn /opt/lock_file -c 'echo "123"' ?加了flock限制后,檢查到文件已被鎖定,則繼續等待或直接返回失敗。

說明:

?1. 鎖文件不存在,會自動創建。 ?

?2. 命令進程執行完畢后,鎖會自動釋放。 ?

參數解釋:??

-s, --shared: 獲得一個共享鎖 (命令可以同時執行) -x, --exclusive: 獲得一個獨占鎖 (鎖被釋放才會開始執行命令) -u, --unlock: 移除一個鎖(通常用不到,腳本執行完會自動釋放鎖) -n, --nonblock: 如果沒有立即獲得鎖,直接返回1失敗,不等待. (非阻塞模式) -w, --timeout: 如果沒有立即獲得鎖,等待指定時間s -o, --close: 在運行命令前關閉文件的描述符號。用于如果命令產生子進程時會不受鎖的管控 (表示當執行command前關閉設置鎖的FD,以使command的子進程不保持鎖。) -c, --command: 在shell中運行一個單獨的命令 -h, --help 顯示幫助 -V, --version: 顯示版本

?

補充說明: ?

共享鎖:允許多個線程同時獲取鎖,并發訪問 ?

獨占鎖

?

-o 舉例:??

  不加-o參數。./down.sh執行完畢后,鎖繼續保留。(nohup后臺運行的進程會繼續持有鎖)???

VM05:/opt/*/bin # lsof |grep /opt/test.lkVM05:/opt/*/bin # ./down.shVM05:/opt/*/bin # flock -x /opt/test.lk -c '/opt/*/*/run.sh';echo $? GATE START 0 VM05:/opt/*/bin # lsof |grep /opt/test.lk java 98329 root 3u REG 202,9 0 19 /opt/test.lk VM05:/opt/*/bin # ps 98329 PID TTY STAT TIME COMMAND 98329 pts/1 Sl 0:08 /usr/java/jdk1.6.0_29/bin/java -DProc=...

?  加上-o參數。run.sh執行完畢后,鎖釋放。(run.sh的子進程不會持有鎖。)???

VM05:/opt/*/bin # ./down.shVM05:/opt/*/bin # lsof |grep /opt/test.lkVM05:/opt/*/bin # flock -xo /opt/test.lk -c '/opt/*/bin/run.sh';echo $? GATE START 0 VM05:/opt/*/bin # lsof |grep /opt/test.lk VM05:/opt/*/bin #

?

? @其他具體實踐運用:

?1、 crontab運用flock防止重復執行

?  * * * * * (flock -xn ./test.lock -c "sh /root/test.sh") #-n 為非阻塞模式

?2、 機器down機自動啟動或重啟

?  可以在daemon開始的時候, 獲取一個文件寫鎖. 守護腳本也設置阻塞模式鎖, 一旦文件寫鎖獲得成功, 則說明daemon已經掛了. 此時守護腳本重啟daemon并放棄寫鎖.?

?  flock -x ./test.lock -c "/usr/local/nginx/sbin/nginx" #去掉-n表示使用阻塞模式

轉載于:https://www.cnblogs.com/eaglediao/p/6501529.html

總結

以上是生活随笔為你收集整理的flock文件锁的学习和应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。