Actually retry every interval rather than just endlessly listening git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@16635 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| # IBM(c) 2013  EPL license http://www.eclipse.org/legal/epl-v10.html
 | |
| # This routine when called, contacts xcatd.  It will return to the caller when xcatd is
 | |
| # ready to process the request
 | |
| # It is called by xcatdsklspost before calling getpostscripts.awk
 | |
| # it is called by remoteshell before calling getcredentials.awk
 | |
| #
 | |
| exec 13<>/dev/udp/$1/$2
 | |
| echo "resourcerequest: xcatd" >&13
 | |
| parpid=$$
 | |
| touch /tmp/goahead.$parpid
 | |
| touch /tmp/killme.$parpid
 | |
| exec 2> /dev/null
 | |
| while ! grep 'resourcerequest: ok' /tmp/goahead.$parpid > /dev/null; do
 | |
| 	(
 | |
|       echo "resourcerequest: xcatd" >&13
 | |
|       exec 14<>/proc/self/stat
 | |
|       read mystat<&14
 | |
|       mypid=$(echo $mystat|cut -d " " -f 4)
 | |
| 	  (sleep $(((RANDOM%60)+120)).$((RANDOM%50)); if [ -f /tmp/killme.$parpid ]; then kill -TERM $mypid; fi) &
 | |
|       echo $! > /tmp/sleeperpid.$parpid
 | |
| 	  exec awk '{print $0 > "/tmp/goahead.'$parpid'";exit}' <&13
 | |
| 	)	
 | |
| done
 | |
| sleeper=$(cat /tmp/sleeperpid.$parpid)
 | |
| sleeper=$(ps -ef|awk "\$3==$sleeper"|awk '{print $2}')
 | |
| kill -TERM $sleeper
 | |
| rm /tmp/goahead.$parpid
 | |
| rm /tmp/sleeperpid.$parpid
 | |
| rm /tmp/killme.$parpid
 | |
| 
 |