Zi 字媒體
2017-07-25T20:27:27+00:00
flock - Manage locks from shell scripts
Ubuntu: 20.04
在一些特殊的情境下,你可能會需要從 shell 上去執行有順序性的 script。但也因為有順序,所以容易發生上一個狀態尚未做完,下一個狀態的 script 就開始工作的狀況。
這時候 Unix 提供的 flock 就派上用場了,flock 的概念有點類似於 Mutual exclusion。
flock 會先嘗試取得某個 lock file 的所有權之後才開始執行,執行時便會握有該 lock file 的所有權,並且在結束之後才釋出。因此,其他以 flock 執行並參考同一份的 lock file 的工作皆會等待原本的程式執行完成,並輪流取得所有權。
Basic Usage
flock 的使用方式為:
flock [options] file|directory command [arguments]
附上幾個較常用到的 options:
Option
Description
-e, -x, --exclusive
預設值,一次只能有一支程序能獲得所有權。
-n, --nb, --nonblock
如果不能獲得所有權,不會等待,直接結束程式。
-s, --shared
可以共用所有權,多支程式能一起執行。
Example
先建立一個範例測試檔案,執行以後會在 10 秒後顯示時間。
test.sh
#! /bin/bash
sleep 10
date
Notice: 記得要打開 test.sh 的執行權限。
接著可以開兩個視窗分別以 flock 去執行 test.sh。
flock /tmp/demo.lock ./test.sh
從得到的結果很明顯可以看出,A window 執行時,B window 是在等待狀態,等 A 結束之後 B 才開始執行。
Result
A window:Tue 01 Jun 2021 04:23:20 PM
B window:Tue 01 Jun 2021 04:23:30 PM
Categories: Unix
Tags: Unix
分類
Android
AngularJS
API Blueprint
Chrome
Cloud-Solution
Azure
Database
MySQL
DataStructure
Docker
Editor
Vim
Firefox
Git
GitLab
Google API
Hadoop
HTTP
Language
Go
Java
JavaScript
jQuery
jQueryChart
Node.js
Vue
Vue-CLI
PHP
Laravel
Lumen
ZendFramework
Python
Mac
Network
Cisco
DLink
Juniper
Oauth
Server
Apache
Share
Unix
FreeBSD
Linux
WebDesign
Bootstrap
CSS
HTML
Wordpress
Search
搜尋關鍵字:
寫了
5860316篇文章,獲得
23313次喜歡