mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-10-25 00:15:43 +00:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@1561 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			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
 | |
| }
 | |
| 
 |