xcat-core/xCAT-server-2.0/lib/xcat/shfunctions

98 lines
1.7 KiB
Plaintext
Raw Normal View History

# 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
}