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
}