linux 系統shell腳本防止同一時間被多次重複執行

前言

當shell腳本中需要執行的步驟較多、耗時較長時,爲了避免腳本被其它進程重複執行導致操作邏輯被打亂,需要使該腳本同一時間內只能被一個進程執行,類似C# 中的lock 代碼塊操作,確保線程安全

代碼

#!/bin/bash

# 創建文件鎖路徑
lock_file=/tmp/my_script.lock

# 信號處理函數
function cleanup() {
  rm -f "$lock_file"
  exit 1
}

# 在中斷和退出腳本執行時,刪除掉文件鎖
trap cleanup 2 Exit

# 使用 flock 命令創建文件鎖並執行腳本
(
  flock -n 9 || {echo "script is executing by another process! exited";exit 1;}
   
   
  # 此處爲腳本主要內容
  echo "Start executing the script..."
  #do something
  echo "Finish executing the script."
  exit 0
) 9>"$lock_file"
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章