http://blog.chinaunix.net/uid-25324849-id-3077304.html
#! /bin/bash -
set -x
#exec 6<>"mylockfile.sh"
{
flock -n 6
# [ "$?" -eq "1" ] && {echo "fail"; exit;}
if [ "$?" -eq "1" ]; then
echo "fail";
exit;
fi
echo $$
sleep 10
} 6<>"mylockfile.sh"
在函数或者子shell里执行flock,返回之后已不再持有锁,需要保护的代码应该放在上面sleep前后。