具体的用法查看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
}