You've already forked mariadb-columnstore-engine
							
							
				mirror of
				https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
				synced 2025-10-30 07:25:34 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			448 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			448 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| # -*-Shell-script-*-
 | |
| #
 | |
| # functions	This file contains functions to be used by most or all
 | |
| #		shell scripts in the /etc/init.d directory.
 | |
| #
 | |
| 
 | |
| TEXTDOMAIN=initscripts
 | |
| 
 | |
| # Make sure umask is sane
 | |
| umask 022
 | |
| 
 | |
| # Set up a default search path.
 | |
| #PATH="$HOME/genii/versioning/BRM:../../export/bin:$HOME/genii/export/bin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"
 | |
| #export PATH
 | |
| 
 | |
| # Get a sane screen width
 | |
| [ -z "${COLUMNS:-}" ] && COLUMNS=80
 | |
| 
 | |
| [ -z "${CONSOLETYPE:-}" ] && CONSOLETYPE="`/sbin/consoletype`"
 | |
| 
 | |
| if [ -f /etc/sysconfig/i18n -a -z "${NOLOCALE:-}" ] ; then
 | |
|   . /etc/sysconfig/i18n
 | |
|   if [ "$CONSOLETYPE" != "pty" ]; then
 | |
| 	case "${LANG:-}" in
 | |
| 		ja_JP*|ko_KR*|zh_CN*|zh_TW*|bn_*|bd_*|pa_*|hi_*|ta_*|gu_*)
 | |
| 			export LC_MESSAGES=en_US
 | |
| 			export LANG
 | |
| 			;;
 | |
| 		*)
 | |
| 			export LANG
 | |
| 			;;
 | |
| 	esac
 | |
|   else
 | |
|   	[ -n "$LC_MESSAGES" ] && export LC_MESSAGES
 | |
| 	export LANG
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| # Read in our configuration
 | |
| if [ -z "${BOOTUP:-}" ]; then
 | |
|   if [ -f /etc/sysconfig/init ]; then
 | |
|       . /etc/sysconfig/init
 | |
|   else
 | |
|     # This all seem confusing? Look in /etc/sysconfig/init,
 | |
|     # or in /usr/doc/initscripts-*/sysconfig.txt
 | |
|     BOOTUP=color
 | |
|     RES_COL=60
 | |
|     MOVE_TO_COL="echo -en \\033[${RES_COL}G"
 | |
|     SETCOLOR_SUCCESS="echo -en \\033[1;32m"
 | |
|     SETCOLOR_FAILURE="echo -en \\033[1;31m"
 | |
|     SETCOLOR_WARNING="echo -en \\033[1;33m"
 | |
|     SETCOLOR_NORMAL="echo -en \\033[0;39m"
 | |
|     LOGLEVEL=1
 | |
|   fi
 | |
|   if [ "$CONSOLETYPE" = "serial" ]; then
 | |
|       BOOTUP=serial
 | |
|       MOVE_TO_COL=
 | |
|       SETCOLOR_SUCCESS=
 | |
|       SETCOLOR_FAILURE=
 | |
|       SETCOLOR_WARNING=
 | |
|       SETCOLOR_NORMAL=
 | |
|   fi
 | |
| fi
 | |
| 
 | |
| if [ "${BOOTUP:-}" != "verbose" ]; then
 | |
|    INITLOG_ARGS="-q"
 | |
| else
 | |
|    INITLOG_ARGS=
 | |
| fi
 | |
| 
 | |
| # Check if $pid (could be plural) are running
 | |
| checkpid() {
 | |
| 	local i
 | |
| 
 | |
| 	for i in $* ; do
 | |
| 		[ -d "/proc/$i" ] && return 0
 | |
| 	done
 | |
| 	return 1
 | |
| }
 | |
| 	
 | |
| 
 | |
| # A function to start a program.
 | |
| daemon() {
 | |
| 	# Test syntax.
 | |
| 	local gotbase= force=
 | |
| 	local base= user= nice= bg= pid=
 | |
| 	nicelevel=0
 | |
| 	while [ "$1" != "${1##[-+]}" ]; do
 | |
| 	  case $1 in
 | |
| 	    '')    echo $"$0: Usage: daemon [+/-nicelevel] {program}"
 | |
| 	           return 1;;
 | |
| 	    --check)
 | |
| 		   base=$2
 | |
| 		   gotbase="yes"
 | |
| 		   shift 2
 | |
| 		   ;;
 | |
| 	    --check=?*)
 | |
| 	    	   base=${1#--check=}
 | |
| 		   gotbase="yes"
 | |
| 		   shift
 | |
| 		   ;;
 | |
| 	    --user)
 | |
| 		   user=$2
 | |
| 		   shift 2
 | |
| 		   ;;
 | |
| 	    --user=?*)
 | |
| 	           user=${1#--user=}
 | |
| 		   shift
 | |
| 		   ;;
 | |
| 	    --force)
 | |
| 	    	   force="force"
 | |
| 		   shift
 | |
| 		   ;;
 | |
| 	    [-+][0-9]*)
 | |
| 	    	   nice="nice -n $1"
 | |
| 	           shift
 | |
| 		   ;;
 | |
| 	    *)     echo $"$0: Usage: daemon [+/-nicelevel] {program}"
 | |
| 	           return 1;;
 | |
| 	  esac
 | |
| 	done
 | |
| 
 | |
|         # Save basename.
 | |
|         [ -z "$gotbase" ] && base=${1##*/}
 | |
| 
 | |
|         # See if it's already running. Look *only* at the pid file.
 | |
| 	if [ -f $PIDDIR/${base}.pid ]; then
 | |
| 		local line p
 | |
| 		read line < $PIDDIR/${base}.pid
 | |
| 		for p in $line ; do
 | |
| 			[ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p"
 | |
| 		done
 | |
| 	fi
 | |
| 	
 | |
| 	[ -n "${pid:-}" -a -z "${force:-}" ] && return
 | |
| 
 | |
| 	# make sure it doesn't core dump anywhere unless requested
 | |
| 	ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0} >/dev/null 2>&1
 | |
| 	
 | |
| 	# if they set NICELEVEL in /etc/sysconfig/foo, honor it
 | |
| 	[ -n "$NICELEVEL" ] && nice="nice -n $NICELEVEL"
 | |
| 	
 | |
| 	# Echo daemon
 | |
|         [ "${BOOTUP:-}" = "verbose" -a -z "$LSB" ] && echo -n " $base"
 | |
| 
 | |
| 	# And start it up.
 | |
| 	if [ -z "$user" ]; then
 | |
| 	   $nice $*
 | |
| 	else
 | |
| 	   $nice runuser -s /bin/bash - $user -c "$*"
 | |
| 	fi
 | |
| 	[ "$?" -eq 0 ] && success $"$base startup" || failure $"$base startup"
 | |
| }
 | |
| 
 | |
| # A function to stop a program.
 | |
| killproc() {
 | |
| 	RC=0
 | |
| 	# Test syntax.
 | |
| 	if [ "$#" -eq 0 ]; then
 | |
| 		echo $"Usage: killproc {program} [signal]"
 | |
| 		return 1
 | |
| 	fi
 | |
| 
 | |
| 	notset=0
 | |
| 	# check for second arg to be kill level
 | |
| 	if [ -n "$2" ]; then
 | |
| 		killlevel=$2
 | |
| 	else
 | |
| 		notset=1
 | |
| 		killlevel="-9"
 | |
| 	fi
 | |
| 
 | |
|         # Save basename.
 | |
|         base=${1##*/}
 | |
| 
 | |
|         # Find pid.
 | |
| 	pid=
 | |
| 	if [ -f /var/run/${base}.pid ]; then
 | |
| 		local line p
 | |
| 		read line < /var/run/${base}.pid
 | |
| 		for p in $line ; do
 | |
| 			[ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid $p"
 | |
| 		done
 | |
| 	fi
 | |
| 	if [ -z "$pid" ]; then
 | |
| 		pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
 | |
| 			pidof -o $$ -o $PPID -o %PPID -x $base`
 | |
| 	fi
 | |
| 
 | |
|         # Kill it.
 | |
|         if [ -n "${pid:-}" ] ; then
 | |
|                 [ "$BOOTUP" = "verbose" -a -z "$LSB" ] && echo -n "$base "
 | |
| 		if [ "$notset" -eq "1" ] ; then
 | |
| 		       if checkpid $pid 2>&1; then
 | |
| 			   # TERM first, then KILL if not dead
 | |
| 			   kill -TERM $pid >/dev/null 2>&1
 | |
| 			   usleep 100000
 | |
| 			   if checkpid $pid && sleep 1 &&
 | |
| 			      checkpid $pid && sleep 3 &&
 | |
| 			      checkpid $pid ; then
 | |
|                                 kill -KILL $pid >/dev/null 2>&1
 | |
| 				usleep 100000
 | |
| 			   fi
 | |
| 		        fi
 | |
| 			checkpid $pid
 | |
| 			RC=$?
 | |
| 			[ "$RC" -eq 0 ] && failure $"$base shutdown" || success $"$base shutdown"
 | |
| 			RC=$((! $RC))
 | |
| 		# use specified level only
 | |
| 		else
 | |
| 		        if checkpid $pid; then
 | |
| 	                	kill $killlevel $pid >/dev/null 2>&1
 | |
| 				RC=$?
 | |
| 				[ "$RC" -eq 0 ] && success $"$base $killlevel" || failure $"$base $killlevel"
 | |
| 			fi
 | |
| 		fi
 | |
| 	else
 | |
| 	    failure $"$base shutdown"
 | |
| 	    RC=0
 | |
| 	fi
 | |
| 
 | |
|         # Remove pid file if any.
 | |
| 	if [ "$notset" = "1" ]; then
 | |
|             rm -f $PIDDIR/$base.pid
 | |
| 	fi
 | |
| 	return $RC
 | |
| }
 | |
| 
 | |
| # A function to find the pid of a program. Looks *only* at the pidfile
 | |
| pidfileofproc() {
 | |
| 	local base=${1##*/}
 | |
| 	
 | |
| 	# Test syntax.
 | |
| 	if [ "$#" = 0 ] ; then
 | |
| 		echo $"Usage: pidfileofproc {program}"
 | |
| 		return 1
 | |
| 	fi
 | |
| 
 | |
| 	# First try "/var/run/*.pid" files
 | |
| 	if [ -f $PIDDIR/$base.pid ] ; then
 | |
| 	        local line p pid=
 | |
| 		read line < $PIDDIR/$base.pid
 | |
| 		for p in $line ; do
 | |
| 		       [ -z "${p//[0-9]/}" -a -d /proc/$p ] && pid="$pid $p"
 | |
| 		done
 | |
| 	        if [ -n "$pid" ]; then
 | |
| 	                echo $pid
 | |
| 	                return 0
 | |
| 	        fi
 | |
| 	fi
 | |
| }
 | |
| 
 | |
| # A function to find the pid of a program.
 | |
| pidofproc() {
 | |
| 	base=${1##*/}
 | |
| 
 | |
| 	# Test syntax.
 | |
| 	if [ "$#" = 0 ]; then
 | |
| 		echo $"Usage: pidofproc {program}"
 | |
| 		return 1
 | |
| 	fi
 | |
| 
 | |
| 	# First try "/var/run/*.pid" files
 | |
| 	if [ -f $PIDDIR/$base.pid ]; then
 | |
| 	        local line p pid=
 | |
| 		read line < $PIDDIR/$base.pid
 | |
| 		for p in $line ; do
 | |
| 		       [ -z "${p//[0-9]/}" -a -d /proc/$p ] && pid="$pid $p"
 | |
| 		done
 | |
| 	        if [ -n "$pid" ]; then
 | |
| 	                echo $pid
 | |
| 	                return 0
 | |
| 	        fi
 | |
| 	fi
 | |
| 	pidof -c -o $$ -o $PPID -o %PPID -x $1 || \
 | |
| 		pidof -c -o $$ -o $PPID -o %PPID -x $base
 | |
| }
 | |
| 
 | |
| status() {
 | |
| 	local base=${1##*/}
 | |
| 	local pid
 | |
| 
 | |
| 	# Test syntax.
 | |
| 	if [ "$#" = 0 ] ; then
 | |
| 		echo $"Usage: status {program}"
 | |
| 		return 1
 | |
| 	fi
 | |
| 
 | |
| 	# First try "pidof"
 | |
| 	pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \
 | |
| 	     pidof -o $$ -o $PPID -o %PPID -x ${base}`
 | |
| 	if [ -n "$pid" ]; then
 | |
| 	        echo $"${base} (pid $pid) is running..."
 | |
| 	        return 0
 | |
| 	fi
 | |
| 
 | |
| 	# Next try "/var/run/*.pid" files
 | |
| 	if [ -f $PIDDIR/${base}.pid ] ; then
 | |
| 	        read pid < $PIDDIR/${base}.pid
 | |
| 	        if [ -n "$pid" ]; then
 | |
| 	                echo $"${base} dead but pid file exists"
 | |
| 	                return 1
 | |
| 	        fi
 | |
| 	fi
 | |
| 	echo $"${base} is stopped"
 | |
| 	return 3
 | |
| }
 | |
| 
 | |
| echo_success() {
 | |
|   [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
 | |
|   echo -n "[  "
 | |
|   [ "$BOOTUP" = "color" ] && $SETCOLOR_SUCCESS
 | |
|   echo -n $"OK"
 | |
|   [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
 | |
|   echo -n "  ]"
 | |
|   echo -ne "\r"
 | |
|   return 0
 | |
| }
 | |
| 
 | |
| echo_failure() {
 | |
|   [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
 | |
|   echo -n "["
 | |
|   [ "$BOOTUP" = "color" ] && $SETCOLOR_FAILURE
 | |
|   echo -n $"FAILED"
 | |
|   [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
 | |
|   echo -n "]"
 | |
|   echo -ne "\r"
 | |
|   return 1
 | |
| }
 | |
| 
 | |
| echo_passed() {
 | |
|   [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
 | |
|   echo -n "["
 | |
|   [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
 | |
|   echo -n $"PASSED"
 | |
|   [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
 | |
|   echo -n "]"
 | |
|   echo -ne "\r"
 | |
|   return 1
 | |
| }
 | |
| 
 | |
| echo_warning() {
 | |
|   [ "$BOOTUP" = "color" ] && $MOVE_TO_COL
 | |
|   echo -n "["
 | |
|   [ "$BOOTUP" = "color" ] && $SETCOLOR_WARNING
 | |
|   echo -n $"WARNING"
 | |
|   [ "$BOOTUP" = "color" ] && $SETCOLOR_NORMAL
 | |
|   echo -n "]"
 | |
|   echo -ne "\r"
 | |
|   return 1
 | |
| }
 | |
| 
 | |
| # Inform the graphical boot of our current state
 | |
| update_boot_stage() {
 | |
|   if [ "$GRAPHICAL" = "yes" -a -x /usr/bin/rhgb-client ]; then
 | |
|     /usr/bin/rhgb-client --update="$1"
 | |
|   fi
 | |
|   return 0
 | |
| }
 | |
| 
 | |
| # Log that something succeeded
 | |
| success() {
 | |
|   #if [ -z "${IN_INITLOG:-}" ]; then
 | |
|   #   initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
 | |
|   #fi
 | |
|   [ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo_success
 | |
|   return 0
 | |
| }
 | |
| 
 | |
| # Log that something failed
 | |
| failure() {
 | |
|   rc=$?
 | |
|   #if [ -z "${IN_INITLOG:-}" ]; then
 | |
|   #   initlog $INITLOG_ARGS -n $0 -s "$1" -e 2
 | |
|   #fi
 | |
|   [ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo_failure
 | |
|   [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --details=yes
 | |
|   [ -w /var/gdm/.gdmfifo ] && echo "BOOTUP_ERRORS" > /var/gdm/.gdmfifo &
 | |
|   return $rc
 | |
| }
 | |
| 
 | |
| # Log that something passed, but may have had errors. Useful for fsck
 | |
| passed() {
 | |
|   rc=$?
 | |
|   #if [ -z "${IN_INITLOG:-}" ]; then
 | |
|   #   initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
 | |
|   #fi
 | |
|   [ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo_passed
 | |
|   return $rc
 | |
| }  
 | |
| 
 | |
| # Log a warning
 | |
| warning() {
 | |
|   rc=$?
 | |
|   #if [ -z "${IN_INITLOG:-}" ]; then
 | |
|   #   initlog $INITLOG_ARGS -n $0 -s "$1" -e 1
 | |
|   #fi
 | |
|   [ "$BOOTUP" != "verbose" -a -z "$LSB" ] && echo_warning
 | |
|   return $rc
 | |
| }  
 | |
| 
 | |
| # Run some action. Log its output.
 | |
| action() {
 | |
|   STRING=$1
 | |
|   echo -n "$STRING "
 | |
|   if [ "${RHGB_STARTED}" != "" -a -w /etc/rhgb/temp/rhgb-console ]; then
 | |
|       echo -n "$STRING " > /etc/rhgb/temp/rhgb-console
 | |
|   fi
 | |
|   shift
 | |
|   $* && success $"$STRING" || failure $"$STRING"
 | |
|   rc=$?
 | |
|   echo
 | |
|   if [ "${RHGB_STARTED}" != "" -a -w /etc/rhgb/temp/rhgb-console ]; then
 | |
|       if [ "$rc" = "0" ]; then
 | |
|       	echo_success > /etc/rhgb/temp/rhgb-console
 | |
|       else
 | |
|         echo_failure > /etc/rhgb/temp/rhgb-console
 | |
| 	[ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --details=yes
 | |
|       fi
 | |
|       echo
 | |
|   fi
 | |
|   return $rc
 | |
| }
 | |
| 
 | |
| # returns OK if $1 contains $2
 | |
| strstr() {
 | |
|   [ "${1#*$2*}" = "$1" ] && return 1
 | |
|   return 0
 | |
| }
 | |
| 
 | |
| # Confirm whether we really want to run this service
 | |
| confirm() {
 | |
|   [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --details=yes
 | |
|   while : ; do 
 | |
|       echo -n $"Start service $1 (Y)es/(N)o/(C)ontinue? [Y] "
 | |
|       read answer
 | |
|       if strstr $"yY" "$answer" || [ "$answer" = "" ] ; then
 | |
|          return 0
 | |
|       elif strstr $"cC" "$answer" ; then
 | |
| 	 rm -f /var/run/confirm
 | |
| 	 [ -x /usr/bin/rhgb-client ] && /usr/bin/rhgb-client --details=no
 | |
|          return 2
 | |
|       elif strstr $"nN" "$answer" ; then
 | |
|          return 1
 | |
|       fi
 | |
|   done
 | |
| }
 |