亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

防止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)容,使用的方法也同步,方法很簡單日后在寫出來

相關(guān)文章

  • Shell腳本運(yùn)行中的停止方法實(shí)現(xiàn)

    Shell腳本運(yùn)行中的停止方法實(shí)現(xiàn)

    Linux系統(tǒng)Shell中提交了一個(gè)腳本,但是需要停止這個(gè)進(jìn)程,如何處理?本文就來詳細(xì)的介紹一下,感興趣的可以了解一下
    2021-11-11
  • Linux禁止普通用戶su至root的解決方法

    Linux禁止普通用戶su至root的解決方法

    很多朋友不清楚linux如何禁止普通用戶su到root,這里需要修改兩個(gè)配置文件,具體詳細(xì)配置大家通過本文了解下吧
    2017-08-08
  • shell 通過makefile傳參給c語言的實(shí)現(xiàn)示例

    shell 通過makefile傳參給c語言的實(shí)現(xiàn)示例

    本文主要介紹了shell 通過makefile傳參給c語言的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Linux中popen函數(shù)的作用小結(jié)

    Linux中popen函數(shù)的作用小結(jié)

    popen()函數(shù)通過創(chuàng)建一個(gè)管道,調(diào)用fork()產(chǎn)生一個(gè)子進(jìn)程,執(zhí)行一個(gè)shell以運(yùn)行命令來開啟一個(gè)進(jìn)程。這篇文章重點(diǎn)給大家介紹Linux中popen函數(shù)的作用,感興趣的朋友一起看看吧
    2018-05-05
  • shell腳本編程之?dāng)?shù)組

    shell腳本編程之?dāng)?shù)組

    數(shù)組就是相同數(shù)據(jù)類型的元素按一定順序排列的集合,就是把有限個(gè)類型相同的變量用一個(gè)名字命名,然后用編號(hào)區(qū)分他們的變量的集合,這個(gè)名字稱為數(shù)組名,編號(hào)稱為下標(biāo)
    2016-01-01
  • 如何短時(shí)間內(nèi)學(xué)好一門語言 shell腳本語言為例

    如何短時(shí)間內(nèi)學(xué)好一門語言 shell腳本語言為例

    這篇文章主要以shell腳本語言為例,為大家介紹了如何短時(shí)間內(nèi)學(xué)好一門語言,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Ubuntu服務(wù)器配置apache2.4的限速功能shell腳本分享

    Ubuntu服務(wù)器配置apache2.4的限速功能shell腳本分享

    這篇文章主要介紹了Ubuntu服務(wù)器配置apache2.4的限速功能shell腳本分享,本文直接給出腳本實(shí)現(xiàn)代碼,代碼相關(guān)原理都寫在了注釋里,需要的朋友可以參考下
    2015-03-03
  • ubuntu與centos中更換ip的shell代碼

    ubuntu與centos中更換ip的shell代碼

    ubuntu與centos中更換ip的shell代碼,需要的朋友可以參考下
    2013-02-02
  • shift妙用之解決shell編程中的入?yún)栴}

    shift妙用之解決shell編程中的入?yún)栴}

    shell編程經(jīng)常會(huì)遇到參數(shù)個(gè)數(shù)不定的這種情況,這種情況怎么處理呢?shift就要閃亮登場了
    2013-08-08
  • linux shell 中雙引號(hào)和單引號(hào)的區(qū)別解析

    linux shell 中雙引號(hào)和單引號(hào)的區(qū)別解析

    最近在編寫shell腳本時(shí),發(fā)現(xiàn)引號(hào)使用的比較頻繁,也出現(xiàn)過小問題,現(xiàn)根據(jù)我的使用情況做一下總結(jié),也加深一下自己的印象,這篇文章主要介紹了linux shell 中雙引號(hào)和單引號(hào)的區(qū)別解析,需要的朋友可以參考下
    2024-02-02

最新評(píng)論