98 lines
1.7 KiB
Plaintext
98 lines
1.7 KiB
Plaintext
|
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
|
||
|
export LOCKDIR=/var/lock/xcat
|
||
|
|
||
|
|
||
|
function needhelp
|
||
|
{
|
||
|
if [ "$#" = "1" ]
|
||
|
then
|
||
|
for i in $*
|
||
|
do
|
||
|
test "$i" = "--help" && echo "\nhttp://xcat.org for support." && return 0
|
||
|
test "$i" = "-h" && echo "http://xcat.org for support.\n" && return 0
|
||
|
test "$i" = "--version" && echo "$VERSION" && exit 0
|
||
|
test "$i" = "-v" && echo "$VERSION" && exit 0
|
||
|
done
|
||
|
fi
|
||
|
return 1
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
function getlock
|
||
|
{
|
||
|
LOCK=$1
|
||
|
TIMEOUT=$2
|
||
|
let t=0
|
||
|
|
||
|
mkdir -p $LOCKDIR
|
||
|
|
||
|
if [ -r $LOCKDIR/$LOCK.pid ]
|
||
|
then
|
||
|
PID=$(cat $LOCKDIR/$LOCK.pid)
|
||
|
while ps -p $PID >/dev/null 2>&1
|
||
|
do
|
||
|
sleep 1
|
||
|
let t=t+1
|
||
|
if (($t -gt $TIMEOUT))
|
||
|
then
|
||
|
return 1
|
||
|
fi
|
||
|
done
|
||
|
fi
|
||
|
|
||
|
echo "$$" > $LOCKDIR/$LOCK.pid
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
function lockstatus
|
||
|
{
|
||
|
LOCK=$1
|
||
|
|
||
|
if [ -r $LOCKDIR/$LOCK.pid ]
|
||
|
then
|
||
|
PID=$(cat $LOCKDIR/$LOCK.pid)
|
||
|
if ps -p $PID >/dev/null 2>&1
|
||
|
then
|
||
|
echo "locked by PID $PID"
|
||
|
ps -fp $PID | tail -1
|
||
|
else
|
||
|
echo "stale lock PID $PID, remove $LOCKDIR/$LOCK.pid"
|
||
|
fi
|
||
|
|
||
|
return 0
|
||
|
fi
|
||
|
|
||
|
echo "nolock"
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
function freelock
|
||
|
{
|
||
|
LOCK=$1
|
||
|
FORCE=$2
|
||
|
|
||
|
mkdir -p $LOCKDIR
|
||
|
|
||
|
if [ "$FORCE" = "1" ]
|
||
|
then
|
||
|
rm -f $LOCKDIR/$LOCK.pid >/dev/null 2>&1
|
||
|
return 0
|
||
|
fi
|
||
|
|
||
|
if [ -r $LOCKDIR/$LOCK.pid ]
|
||
|
then
|
||
|
PID=$(cat $LOCKDIR/$LOCK.pid)
|
||
|
if [ "$PID" = "$$" ]
|
||
|
then
|
||
|
rm -f $LOCKDIR/$LOCK.pid
|
||
|
else
|
||
|
return 1
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
return 0
|
||
|
}
|
||
|
|