Linux

如何確保只有一個 bash 腳本實例執行?

  • March 29, 2021

不需要額外工具的解決方案將是首選。

幾乎就像 nsg 的回答:使用鎖定目錄。目錄創建在 linux 和 unix 以及 *BSD 和許多其他作業系統下是原子的。

if mkdir $LOCKDIR
then
   # Do important, exclusive stuff
   if rmdir $LOCKDIR
   then
       echo "Victory is mine"
   else
       echo "Could not remove lock dir" >&2
   fi
else
   # Handle error condition
   ...
fi

您可以將鎖定 sh 的 PID 放入 lock 目錄中的文件中以進行調試,但不要陷入認為您可以檢查該 PID 以查看鎖定過程是否仍在執行的陷阱。許多比賽條件都在這條路上。

引用自:https://unix.stackexchange.com/questions/48505