最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2013年01月23日 17:35:56   作者:  
利用鎖機(jī)制,讓一個(gè)特定的shell腳本,每次只能運(yùn)行一個(gè)實(shí)例。具體來說,獲得鎖的腳本實(shí)例,能夠繼續(xù)往下執(zhí)行臨界區(qū)代碼;沒有獲得鎖的實(shí)例,則只能等待

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

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

#!/bin/bash
#
# file locking using bash.
# ver 0.1.6
#
# author : malundao ( malundao@sina.com )
# 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)容,使用的方法也同步,方法很簡(jiǎn)單日后在寫出來

相關(guān)文章

  • linux shell之控制臺(tái)打印各種顏色字體和背景的實(shí)現(xiàn)方法

    linux shell之控制臺(tái)打印各種顏色字體和背景的實(shí)現(xiàn)方法

    今天小編就為大家分享一篇關(guān)于linux shell之控制臺(tái)打印各種顏色字體和背景的實(shí)現(xiàn)方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • 一天一個(gè)shell命令 文本操作系列-comm命令用法

    一天一個(gè)shell命令 文本操作系列-comm命令用法

    這篇文章主要介紹了linux系統(tǒng)下的comm命令是一個(gè)非常實(shí)用的文件對(duì)比命令,需要的朋友可以參考下
    2016-05-05
  • shell腳本自動(dòng)安裝jdk的方法示例

    shell腳本自動(dòng)安裝jdk的方法示例

    這篇文章主要介紹了shell腳本自動(dòng)安裝jdk的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • shell腳本實(shí)現(xiàn)多進(jìn)程運(yùn)行的方法示例

    shell腳本實(shí)現(xiàn)多進(jìn)程運(yùn)行的方法示例

    這篇文章主要給大家分享了shell腳本實(shí)現(xiàn)多進(jìn)程運(yùn)行的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-06-06
  • Shell腳本傳遞參數(shù)的4種方式實(shí)例說明

    Shell腳本傳遞參數(shù)的4種方式實(shí)例說明

    Shell腳本是一種命令語言,可以用于自動(dòng)化執(zhí)行各種任務(wù),在腳本中,我們可以通過參數(shù)來傳遞信息,本文將介紹如何在shell腳本中傳遞參數(shù),包括位置參數(shù)、特殊變量、環(huán)境變量和命名參數(shù),需要的朋友可以參考下
    2023-06-06
  • shell實(shí)現(xiàn)自動(dòng)備份mysql、整站數(shù)據(jù)的兩個(gè)腳本分享

    shell實(shí)現(xiàn)自動(dòng)備份mysql、整站數(shù)據(jù)的兩個(gè)腳本分享

    這篇文章主要介紹了shell實(shí)現(xiàn)自動(dòng)備份mysql、整站數(shù)據(jù)的兩個(gè)腳本分享,使用了cron實(shí)現(xiàn)實(shí)現(xiàn)定時(shí)備份,并會(huì)自動(dòng)刪除N天前的備份,以及自動(dòng)FTP上傳到別的服務(wù)器,需要的朋友可以參考下
    2014-06-06
  • Linux使用文本編輯器vi常用命令

    Linux使用文本編輯器vi常用命令

    vi就是一種功能強(qiáng)大的文本編輯器,而vim則是高級(jí)版的vi,不但可以用不同顏色顯示文字內(nèi)容,還能進(jìn)行諸如shell腳本、C語言程序編輯等功能,可以作為程序編輯器。下面通過本文給大家介紹linux 文本編輯器vi常用命令,一起看看吧
    2017-09-09
  • Shell中的for和while循環(huán)詳細(xì)總結(jié)

    Shell中的for和while循環(huán)詳細(xì)總結(jié)

    這篇文章主要介紹了Shell中的for和while循環(huán)詳細(xì)總結(jié),本文講解了for循環(huán)的數(shù)字段形式、詳細(xì)列出、對(duì)文件進(jìn)行循環(huán),while循環(huán)的三種使用場(chǎng)合等內(nèi)容,需要的朋友可以參考下
    2015-05-05
  • linux?shell腳本學(xué)習(xí)指南

    linux?shell腳本學(xué)習(xí)指南

    這篇文章主要介紹了linux?shell腳本學(xué)習(xí)指南的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • shell如何記錄用戶的IP與命令詳解

    shell如何記錄用戶的IP與命令詳解

    這篇文章主要給大家介紹了關(guān)于shell是如何記錄用戶的IP與命令的相關(guān)資料,記錄用戶輸入過的命令使用history命令,而記錄用戶的IP可能稍復(fù)雜一些,需要的朋友們下面跟著小編一起來看看吧。
    2017-06-06

最新評(píng)論

商丘市| 延长县| 五莲县| 弥渡县| 镇雄县| 常宁市| 高雄市| 延吉市| 大港区| 广西| 化隆| 临澧县| 东城区| 和硕县| 小金县| 苏尼特右旗| 德化县| 定州市| 交城县| 马公市| 四川省| 和政县| 宜宾县| 旬邑县| 紫云| 星子县| 昌宁县| 丹阳市| 濮阳市| 常宁市| 贺州市| 玛纳斯县| 灵山县| 福贡县| 易门县| 英超| 江永县| 攀枝花市| 建平县| 珠海市| 竹山县|