aboutsummaryrefslogtreecommitdiff
path: root/repos/core/initscripts/rc.shutdown
blob: 255c4b5af05ae87c7c4b25320b6c7d50819ceff1 (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
#!/bin/sh

echo "> Shutting down system..."

if [ -x /etc/rc.shutdown.local ]; then
    echo "> Running local shutdown scripts..."
    /etc/rc.shutdown.local
fi

if command -v udevadm >/dev/null 2>&1; then
    echo "> Stopping udev..."
    udevadm control --exit
fi

echo "> Stopping all services..."
sv force-stop /var/service/* 2>/dev/null

sleep 1

if [ -w /var/lib/random-seed ]; then
    echo "> Saving random seed..."
    dd if=/dev/urandom of=/var/lib/random-seed count=1 bs=512 2>/dev/null
fi

if [ -e /dev/rtc ] || [ -e /dev/rtc0 ]; then
	echo "> Syncing hardware clock..."
	hwclock -w -u 2>/dev/null
fi

echo "> Terminating processes..."
kill -s TERM -1 2>/dev/null
sleep 2

kill -s KILL -1 2>/dev/null
sleep 1

echo "> Disabling swap..."
swapoff -a 2>/dev/null

echo "> Bringing down network..."
ip link set lo down 2>/dev/null

for iface in $(ip link show | grep '^[0-9]' | awk -F: '{print $2}' | tr -d ' ' | grep -v '^lo$'); do
    ip link set "$iface" down 2>/dev/null
done

echo "> Unmounting filesystems..."
umount -a -r -t noproc 2>/dev/null

echo "> Remounting root as read-only..."
mount -o remount,ro / 2>/dev/null

echo "> Syncing filesystems..."
sync

sleep 1

echo "> Shutdown complete. Bye!"