#!/bin/bash # # /etc/rc.single: Single-user startup script. # . /etc/rc.conf . /etc/rc.d/functions run_hook single_start if [ "$PREVLEVEL" = "3" -o "$PREVLEVEL" = "5" ]; then # Find daemons NOT in the DAEMONS array. Shut these down first if [ -d /var/run/daemons ]; then for daemon in $(/bin/ls -1t /var/run/daemons); do if ! in_array $daemon ${DAEMONS[@]}; then stop_daemon $daemon fi done fi # Shutdown daemons in reverse order let i=${#DAEMONS[@]}-1 while [ $i -ge 0 ]; do if [ "${DAEMONS[$i]:0:1}" != '!' ]; then ck_daemon ${DAEMONS[$i]#@} || stop_daemon ${DAEMONS[$i]#@} fi let i=i-1 done fi if [ "$PREVLEVEL" != "N" ]; then run_hook single_prekillall # Terminate all processes stat_busy "Sending SIGTERM To Processes" /sbin/killall5 -15 &> /dev/null /bin/sleep 5 stat_done stat_busy "Sending SIGKILL To Processes" /sbin/killall5 -9 &> /dev/null /bin/sleep 1 stat_done run_hook single_postkillall stat_busy "Starting UDev Daemon" /sbin/udevd --daemon stat_done run_hook single_udevlaunched # Trigger udev uevents if /bin/pidof -o %PPID /sbin/udevd >/dev/null; then stat_busy "Triggering UDev uevents" /sbin/udevadm trigger stat_done fi # Wait for udev uevents if /bin/pidof -o %PPID /sbin/udevd >/dev/null; then stat_busy "Waiting for UDev uevents to be processed" /sbin/udevadm settle stat_done fi run_hook single_udevsettled # try syslog-NG first, then fall back to good ol' syslogd if [ -x /etc/rc.d/syslog-ng ]; then /etc/rc.d/syslog-ng start elif [ -x /etc/rc.d/syslogd ]; then /etc/rc.d/syslogd start [ -x /etc/rc.d/klogd ] && /etc/rc.d/klogd start fi fi run_hook single_end if [ "$RUNLEVEL" = "1" ]; then printsep printhl "Entering single-user mode..." # make sure /dev/initctl is in place /bin/kill -HUP 1 exec /sbin/init -t1 S fi # End of file # vim: set ts=2 noet: