防止shell指令碼重複執行

2021-05-27 19:37:43 字數 867 閱讀 1101

利用鎖機制,讓乙個特定的shell指令碼,每次只能執行乙個例項。具體來說,獲得鎖的指令碼例項,能夠繼續往下執行臨界區**;沒有獲得鎖的例項,則只能等待。

例如,要求指令碼只能順序訪問某個資源,例如磁碟檔案等,就可以參考下面的實現。

#!/bin/bash

## file locking using bash.

# ver 0.1.6

## author : malundao ( [email protected] )

# date : 2011-08-31

# ref :

## note:

# shflock_cleanhook() is a user defined function to clean up user-specific sth.

## /path/to/lock/. note; directory, not a file.

# should be modified

lockpath="/tmp"

cleanup()

putlock ()

## test

shflock_cleanhook()

while true; do

while ! getlock; do

#echo wait a second...

sleep 1

done

echo \[$$\] `date` ,now hold lock for 3 seconds...

sleep 3

#echo putlock

putlock

sleep 1 # yield

done

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

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

shell 執行shell指令碼

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

Shell指令碼執行

shell是乙個命令列直譯器,它為使用者提供了乙個向linux核心傳送請求以便執行程式的介面系統級程式,使用者可以用shell來啟動 掛起 停止甚至是編寫一些程式。shell指令碼 shell script 是一種shell編寫的指令碼程式。linux的shell種類很多,常見的有 bourne a...