github.com/demonoid81/moby@v0.0.0-20200517203328-62dd8e17c460/contrib/init/sysvinit-redhat/docker (about)

     1  #!/bin/sh
     2  #
     3  #       /etc/rc.d/init.d/docker
     4  #
     5  #       Daemon for docker.com
     6  #
     7  # chkconfig:   2345 95 95
     8  # description: Daemon for docker.com
     9  
    10  ### BEGIN INIT INFO
    11  # Provides:       docker
    12  # Required-Start: $network cgconfig
    13  # Required-Stop:
    14  # Should-Start:
    15  # Should-Stop:
    16  # Default-Start: 2 3 4 5
    17  # Default-Stop:  0 1 6
    18  # Short-Description: start and stop docker
    19  # Description: Daemon for docker.com
    20  ### END INIT INFO
    21  
    22  # Source function library.
    23  . /etc/rc.d/init.d/functions
    24  
    25  prog="docker"
    26  unshare=/usr/bin/unshare
    27  exec="/usr/bin/dockerd"
    28  pidfile="/var/run/$prog.pid"
    29  lockfile="/var/lock/subsys/$prog"
    30  logfile="/var/log/$prog"
    31  
    32  [ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
    33  
    34  prestart() {
    35  	service cgconfig status > /dev/null
    36  
    37  	if [[ $? != 0 ]]; then
    38  		service cgconfig start
    39  	fi
    40  
    41  }
    42  
    43  start() {
    44  	if [ ! -x $exec ]; then
    45  		if [ ! -e $exec ]; then
    46  			echo "Docker executable $exec not found"
    47  		else
    48  			echo "You do not have permission to execute the Docker executable $exec"
    49  		fi
    50  		exit 5
    51  	fi
    52  
    53  	check_for_cleanup
    54  
    55  	if ! [ -f $pidfile ]; then
    56  		prestart
    57  		printf "Starting $prog:\t"
    58  		echo "\n$(date)\n" >> $logfile
    59  		"$unshare" -m -- $exec $other_args >> $logfile 2>&1 &
    60  		pid=$!
    61  		touch $lockfile
    62  		# wait up to 10 seconds for the pidfile to exist.  see
    63  		# https://github.com/demonoid81/moby/issues/5359
    64  		tries=0
    65  		while [ ! -f $pidfile -a $tries -lt 10 ]; do
    66  			sleep 1
    67  			tries=$((tries + 1))
    68  			echo -n '.'
    69  		done
    70  		if [ ! -f $pidfile ]; then
    71  			failure
    72  			echo
    73  			exit 1
    74  		fi
    75  		success
    76  		echo
    77  	else
    78  		failure
    79  		echo
    80  		printf "$pidfile still exists...\n"
    81  		exit 7
    82  	fi
    83  }
    84  
    85  stop() {
    86  	echo -n $"Stopping $prog: "
    87  	killproc -p $pidfile -d 300 $prog
    88  	retval=$?
    89  	echo
    90  	[ $retval -eq 0 ] && rm -f $lockfile
    91  	return $retval
    92  }
    93  
    94  restart() {
    95  	stop
    96  	start
    97  }
    98  
    99  reload() {
   100  	restart
   101  }
   102  
   103  force_reload() {
   104  	restart
   105  }
   106  
   107  rh_status() {
   108  	status -p $pidfile $prog
   109  }
   110  
   111  rh_status_q() {
   112  	rh_status > /dev/null 2>&1
   113  }
   114  
   115  check_for_cleanup() {
   116  	if [ -f ${pidfile} ]; then
   117  		/bin/ps -fp $(cat ${pidfile}) > /dev/null || rm ${pidfile}
   118  	fi
   119  }
   120  
   121  case "$1" in
   122  	start)
   123  		rh_status_q && exit 0
   124  		$1
   125  		;;
   126  	stop)
   127  		rh_status_q || exit 0
   128  		$1
   129  		;;
   130  	restart)
   131  		$1
   132  		;;
   133  	reload)
   134  		rh_status_q || exit 7
   135  		$1
   136  		;;
   137  	force-reload)
   138  		force_reload
   139  		;;
   140  	status)
   141  		rh_status
   142  		;;
   143  	condrestart | try-restart)
   144  		rh_status_q || exit 0
   145  		restart
   146  		;;
   147  	*)
   148  		echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
   149  		exit 2
   150  		;;
   151  esac
   152  
   153  exit $?