1. 程式人生 > >flock導致程序卡死, 如何檢視

flock導致程序卡死, 如何檢視

具體的用法檢視man flock就ok了。

因為遇到用flock鎖一直鎖住的情況,所以想寫個指令碼看看到底是哪個程序一直佔著資源。

用法:開幾個shell視窗,執行此指令碼,tailf  /tmp/gaussdbControl,檢視程序獲得鎖和釋放鎖的情況,同時可以用lsof -d 211來檢視這個檔案描述符的情況

=============================================================================================

#!/bin/bash
#測試flock,執行指令碼的時候,總是會起2個程序,這2個程序為父子程序關係,不要緊張
#
lock_file=/tmp/gaussdbControl.lock
date "+%T %F"


get_lock_success(){
        echo  ++++++++++++++got the lock, `date "+%T %F"` ,`ps -ef | grep $$` | tee -a $lock_file
        sleep 100
}


(
        echo ===============try to get the lock,`date "+%T %F"`,`ps -ef | grep $$` | tee -a $lock_file 
        flock -x 211  || get_lock_fail
        get_lock_success
) 211>/tmp/gaussdbControl.lock




get_lock_fail(){


        echo --------------failed to get lock, `date "+%T %F"`, i`ps -ef | grep $$` | tee -a $lock_file
        exit 211
}