summaryrefslogtreecommitdiff
path: root/rc.single
blob: 5f55eeb29ff680d19cb4528acba74167f8dd3bd6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/bash
#
# /etc/rc.single: Single-user startup script.
#

. /etc/rc.conf
. /etc/rc.d/functions

source_functions

if [ "$PREVLEVEL" = "3" -o "$PREVLEVEL" = "5" ]; then
	# Shutdown daemons
	let i=${#DAEMONS[@]}
	while [[ i -gt 0 ]]; do
		if [[ $(echo ${DAEMONS[$i]} | grep '^[^\!]' | wc -l) -eq 1 ]]; then
			/etc/rc.d/${DAEMONS[$i]#@} stop
		fi
		let i=i-1
	done
	# find any leftover daemons and shut them down
	if [ -d /var/run/daemons ]; then
		for daemon in $(ls /var/run/daemons); do
			/etc/rc.d/$daemon stop
		done
	fi
fi

if [ "$PREVLEVEL" != "N" ]; then
	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
	/bin/sleep 1
	stat_done

	if [ -x /etc/start_udev -a -d /sys/block ]; then
		# We have a start_udev script and /sys appears to be mounted, use UDev
		status "Starting UDev Daemon" /etc/start_udev
		if [ "$(pidof -o %PPID /sbin/udevd)" ]; then
			# If an old udevd is kicking around, we'll have to remount pts and shm
			umount /dev/shm /dev/pts >/dev/null 2>&1
			mount /dev/pts
			mount /dev/shm
		fi
	else
		# Static /dev, our last resort
		status "Using static /dev filesystem" /bin/true
	fi

	# 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

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: