Shell指令碼避免重複執行的方法

2022-09-26 16:45:12 字數 675 閱讀 9827

很多用cron定時執行的shell指令碼可能會由於各種原因執行很久,會有必要在執行的時候先檢查一下自身是否還在執行。本文提供的linux shell指令碼用以檢查以命令sh ...來執行的shell指令碼。要對其他東西進行唯一性檢查,可以稍微修改一下源**。

複製** **如下:

# 檢查通過sh命令執行的shell指令碼是不是還在執行當中,避免重複執行.

# 把這段**放在需要保證唯一性的程式頭部即可

# 注意,如果直接把此指令碼放到cron裡面執行的話,必須再grep -v " -c sh "以排除由cron產生的程序!

checkitem="$0"

let proccnt=`ps -a --format='%p%p%c%x%a' --width 2048 -w --sort pid|grep "$checkitem"|grep -v grep|gr程式設計客棧ep -v " -c sh "|grep -v "$$" | grep -c sh|awk ''`

if [ $ -gt 0 ] ; then

echo "$0指令碼已經在執行[procs=$],此次執行自動取消."

&www.cppcns.comnbsp; exit 1;

twzztktiuffi

本文標題: shell指令碼避免重複執行的方法

本文位址: /os/linux/118925.html

防止shell指令碼重複執行

利用鎖機制,讓乙個特定的shell指令碼,每次只能執行乙個例項。具體來說,獲得鎖的指令碼例項,能夠繼續往下執行臨界區 沒有獲得鎖的例項,則只能等待。例如,要求指令碼只能順序訪問某個資源,例如磁碟檔案等,就可以參考下面的實現。bin bash file locking using bash.ver 0...

shell 執行shell指令碼

bin bash echo hello world 是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 shell。echo 命令用於向視窗輸出文字。1 作為可執行程式 chmod x test.sh 使指令碼具有執行許可權 test.sh 執行指令碼注意,一定要寫成 test...

如何避免shell指令碼被同時執行多次

比如說有乙個週期性 cron 備份mysql的指令碼,或者rsync指令碼,如果出現意外,執行時間過長,很有可能下乙個備份週期已經開始了,當前週期的指令碼卻還沒有執行完,顯然我們都不願意看到這樣的情況發生。其實只要對指令碼自身做一些改動,就可以避免它被重複執行。bin bash lock name ...