Bash-Script
如何確保腳本以獨占方式執行?
所以我有一個 bash 腳本,它可以做一些非常基本的事情(從 github 中提取、刪除文件夾……等等……)。當我需要在伺服器上安裝新版本的 Web 應用程序時,我通常會執行它。
問題是沒有任何東西可以阻止這個腳本被不同的人同時執行(幾乎所有的開發人員都連接到這個伺服器並且他們執行相同的命令)。
到目前為止,腳本一次由超過 1 個開發人員執行的情況並未發生。
如果該腳本已經被其他使用者執行,我如何確保它不能執行?文件夾鎖定或檢查腳本是否由另一個使用者執行(這是可行的嗎?)別的什麼?
所有可以執行此腳本的使用者都是 sudoers。
編輯:好吧,在檢查了我的同事之後發現並非所有人都在使用腳本..他們中的一些人正在手動執行命令,所以我需要鎖定文件夾本身。
群 - 管理來自 shell 腳本的鎖
man flock
例如
群 -x 鎖定文件 -c 命令
將這些行放在您的腳本中也可以。(對不起,我忘了我將互斥鎖定義為一個函式)。
mutex() { if ( set -o noclobber; echo "$$" > "$1") 2> /dev/null; then trap "rm -f \"$1\"; exit \$?" INT TERM EXIT KILL return 0 else return 1 fi } mutex .LOCKFILE || { echo "Another instance of $0 still exists"; exit 1; }