Linux
如何確保只有一個 bash 腳本實例執行?
不需要額外工具的解決方案將是首選。
幾乎就像 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 以查看鎖定過程是否仍在執行的陷阱。許多比賽條件都在這條路上。