麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Linux Shell > 正文

防止shell腳本重復(fù)執(zhí)行的代碼

2020-07-27 19:26:35
字體:
供稿:網(wǎng)友

例如,要求腳本只能順序訪問某個資源,例如磁盤文件等,就可以參考下面的實現(xiàn)。

復(fù)制代碼 代碼如下:

#!/bin/bash
#
# file locking using bash.
# ver 0.1.6
#
# author : malundao ( [email protected] )
# date   : 2011-08-31  
# ref    : http://unix.derkeiler.com/Newsgroups/comp.unix.shell/2005-09/0472.html
#
# 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() {
        shflock_cleanhook
        cd $LOCKPATH
        [ -e lock.pid ] || exit
        read pid >/dev/null 2>&1 <lock.pid
        if [ -n "$pid" ]; then
            if [ "$pid" == "$$" ]; then
                rm -f lock.$pid
                rm -f lock.pid
                exit
            fi 
        fi 
        exit
}
#  trap EXIT ?
trap 'cleanup' HUP INT TERM
getlock() {
        oldpath=`pwd`
        cd $LOCKPATH
        while
                echo $$ > lock.$$
                [ -e lock.pid ]
        do
                rm lock.$$
                read pid >/dev/null 2>&1 <lock.pid
                if [ -n "$pid" ]; then
                        if [ -e /proc/$pid ]; then
                                cd $oldpath
                                return 1 # Lock is taken by others
                        else
                                #unsafe: rm -f lock.$pid
                                echo WARN: please delete stale lock.pid by HAND.
                                return 2
                        fi
                else
                        # sleep some seconds,then back to 'while' loop
                        # 11 is a prime number, $$ as a random. 
                        echo sleep $(( $$ % 11 ))
                        sleep $(( $$ % 11 ))
                fi
        done
        # 'ln -s' is an atom op.
        ln -s lock.$$ lock.pid >/dev/null 2>&1
        if [ $? -eq 0 ]; then
                cd $oldpath
                return 0 # We got the lock
        else
                [ -e lock.pid ] || echo WARN: please delete hanging lock.pid by HAND.
                cd $oldpath
                return 3 # Lock is probably taken by others.
        fi
}
putlock () {
    oldpath=`pwd`
    cd $LOCKPATH && rm -f lock.$$ lock.pid
    cd $oldpath
}
## test
shflock_cleanhook() {
    echo i/'m a hook.
}
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

防止腳本多次執(zhí)行(一)
復(fù)制代碼 代碼如下:

while [ `ps x |grep -v grep|grep filename.sh|wc -l` -gt 0 ];
do
        exit
done

把內(nèi)容放在腳本最上面

filename.sh 替換為你要監(jiān)控的腳本名字
還有一種方法是 死循環(huán) 可以根據(jù)不同的環(huán)境,不同的腳本內(nèi)容,使用的方法也同步,方法很簡單日后在寫出來

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 高清成人在线 | 国产精品一区在线免费观看 | 天天草天天爱 | 欧美a视频在线观看 | 香蕉国产在线视频 | 欧美扩阴视频 | 激情亚洲一区二区三区 | 国产精品久久久久影院老司 | 国产亚洲精品久久久久久久久 | 羞羞的视频在线 | aa级黄色片 | 欧美日本在线播放 | 毛片av网| 国产精品视频1区 | 欧美日本一| www亚洲免费 | 精品一区二区在线播放 | 亚洲成人高清电影 | 国产福利视频在线观看 | 在线成人精品视频 | 精品久久久久久久久久中文字幕 | 黄色片网站在线免费观看 | 国产精品久久久久久久久久三级 | 亚洲国产成人久久一区www妖精 | 亚洲一区二区 | 久久综合综合 | 国产成人精品一区二区视频免费 | av中文一区 | h视频在线播放 | 中文字幕爱爱视频 | 午夜小视频免费观看 | 黄色免费入口 | 国产成人自拍小视频 | 国产自在自线午夜精品视频在 | 九九热免费视频在线观看 | 天堂精品| 一区二区三区欧美在线观看 | 日韩视频在线不卡 | 国产91中文字幕 | 久久99精品国产自在现线 | 国产一国产一级毛片视频在线 |