]> git.pld-linux.org Git - projects/rc-scripts.git/blob - rc.d/rc.shutdown
- typo
[projects/rc-scripts.git] / rc.d / rc.shutdown
1 #!/bin/sh
2 #
3 # shutdwn       Common script for system halt/reboot.
4 #
5 # Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
6 #               Modified for PLD Linux by Grzegorz Stanislawski
7 # Changes:      Arkadiusz Mi¶kiewicz <misiek@pld.org.pl>
8 #
9 # $Id: rc.shutdown,v 1.8 2000/05/30 05:51:34 waszi Exp $
10
11 # Set the path.
12 PATH=/sbin:/bin:/usr/bin:/usr/sbin
13
14 # NLS
15 NLS_DOMAIN="rc-scripts"
16
17 # move to root dir
18 cd /
19
20 . /etc/rc.d/init.d/functions
21
22 # Kill all processes.
23 [ "${BASH+bash}" = bash ] && enable kill
24
25 run_cmd "Sending all processes the TERM signal" killall5 -15
26 sleep 5
27 run_cmd "Sending all processes the KILL signal" killall5 -9
28
29 # Write to wtmp file before unmounting /var
30 halt -w
31
32 # Turn off swap, then unmount file systems.
33 run_cmd "Turning off swap and accounting" swapoff -a
34 [ -x /sbin/accton ] && /sbin/accton
35
36 if [ -x /sbin/quotaoff ]; then
37         run_cmd "Turning off quotas for local filesystems" /sbin/quotaoff -a
38 fi
39
40 # Unmount file systems, killing processes if we have to.
41 sig=
42 retry=3
43 remaining=`awk '!/(^#| (proc|devfs|devpts|\/) |^none|^\/dev\/root)/ {print $2}' /proc/mounts`
44 while [ -n "$remaining" -a "$retry" -gt 0 ]
45 do
46         _ERRORS=""
47         show "Unmounting file systems"; busy
48         if _ERRORS="`LC_ALL=C;LANG=C;initlog -c \"umount -a -f -t noproc\" 2>&1`"; then
49                 deltext; ok
50         else
51                 deltext; fail; echo $_ERRORS
52         fi
53         unset _ERRORS
54         
55         sleep 2
56         remaining=`awk '!/(^#| (proc|devfs|devpts|\/) |^none|^\/dev\/root)/ {print $2}' /proc/mounts`
57         [ -z "$remaining" ] && break
58         [ -x /sbin/fuser ] && /sbin/fuser -k -m $sig $remaining >/dev/null 2>/dev/null
59         sleep 5
60         retry=$(($retry-1))
61         sig=-9
62 done
63
64 run_cmd "Remounting root filesystem in ro mode" mount -n -o remount,ro /
65
66 # turn off raid
67 if [ -x /sbin/raidstop -a -f /etc/raidtab ]; then
68         # we can not use raidstop -a here because this will only stop
69         # devices listed in the default config file which is not always
70         # the case. So we look only for the active raid devices
71         if [ -f /proc/mdstat ] ; then
72                 mddevs=$(awk '/^md.* active/ {print $1}' /proc/mdstat)
73                 for mddev in $mddevs ; do
74                         MESSAGE="`nls "Turning off RAID for %s" "$mddev"`"
75                         run_cmd "$MESSAGE" raidstop /dev/$mddev
76                 done
77                 unset mddev mddevs
78         fi
79         #runcmd "Turning off RAID" /sbin/raidstop -a
80 fi
81
82 show "Remounting remaining filesystems ro mode"; busy
83 if ( mount | awk '/ext2/ { print $3 }' | \
84         while read line; do 
85         mount -n -o ro,remount $line; done ); then
86         deltext; ok
87 else
88         deltext; fail
89 fi
This page took 0.026454 seconds and 3 git commands to generate.