[arch-projects] [initscripts] [PATCH 09/11] functions: Speed up reboot/shutdown by recognizing killall5 exit code 2

Dave Reisner d at falconindy.com
Sat Jul 2 17:56:22 EDT 2011


On Sat, Jul 02, 2011 at 11:49:29PM +0200, Kurt J. Bosch wrote:
> killall5 returns 2 if it didn't find any processes to send to. Using this avoids sleeping longer than needed. This saves another up to six seconds of reboot/shutdown/go-single time.
> ---
>  functions |   17 +++++++++++++++--
>  1 files changed, 15 insertions(+), 2 deletions(-)
> 
> diff --git a/functions b/functions
> index 69f06eb..067d61d 100644
> --- a/functions
> +++ b/functions
> @@ -292,14 +292,27 @@ kill_everything() {
>  	run_hook "$1_prekillall"
> 
>  	# Terminate all processes
> +	# and wait until timeout or killall5 reports all done
> +	# Unfortunately killall5 does not support the 0 signal, so just
> +	# use SIGCONT for checking (which should be ignored).
>  	stat_busy "Sending SIGTERM To Processes"
>  		killall5 -15 ${omit_pids[@]/#/-o } &>/dev/null
> -		sleep 5
> +		local i
> +		for (( i=0; i<20; i++ )); do
> +			killall5 -18 ${omit_pids[@]/#/-o } &>/dev/null
> +			(( $? == 2 )) && break
> +			sleep .25 # 1/4 second
> +		done
>  	stat_done
> 
>  	stat_busy "Sending SIGKILL To Processes"
>  		killall5 -9 ${omit_pids[@]/#/-o } &>/dev/null
> -		sleep 1
> +		local i
> +		for (( i=0; i<4; i++ )); do
> +			killall5 -18 ${omit_pids[@]/#/-o } &>/dev/null
> +			(( $? == 2 )) && break
> +			sleep .25 # 1/4 second
> +		done
>  	stat_done
> 
>  	run_hook "$1_postkillall"
> --
> 1.7.1
> 

Not at all what I meant about the comment. I'll leave the decision on
this one up to Tom.

dave


More information about the arch-projects mailing list