aboutsummaryrefslogtreecommitdiffstats
path: root/rc.d/init.d/halt
diff options
context:
space:
mode:
Diffstat (limited to 'rc.d/init.d/halt')
-rwxr-xr-xrc.d/init.d/halt213
1 files changed, 0 insertions, 213 deletions
diff --git a/rc.d/init.d/halt b/rc.d/init.d/halt
deleted file mode 100755
index 8b990791..00000000
--- a/rc.d/init.d/halt
+++ /dev/null
@@ -1,213 +0,0 @@
-#!/bin/bash
-#
-# halt This file is executed by init when it goes into runlevel
-# 0 (halt) or runlevel 6 (reboot). It kills all processes,
-# unmounts file systems and then either halts or reboots.
-#
-# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
-# Modified for RHS Linux by Damien Neil
-#
-
-NOLOCALE=1
-. /etc/init.d/functions
-
-UMOUNT="umount"
-[ ! -w /etc ] && UMOUNT="umount -n"
-
-halt_crypto() {
- fnval=0
- while read dst src key; do
- [ -z "$dst" -o "${dst#\#}" != "$dst" ] && continue
- if [ -b "/dev/mapper/$dst" ]; then
- if /sbin/dmsetup info "$dst" | grep -q '^Open count: *0$'; then
- action $"Stopping disk encryption for $dst" /sbin/cryptsetup remove "$dst"
- else
- fnval=1
- fi
- fi
- done < /etc/crypttab
- return $fnval
-}
-
-kill_all() {
- local STRING rc
-
- STRING=$1
- echo -n "$STRING "
- shift
- /sbin/killall5 "$@"
- rc=$?
- # Retval: 0: success 1: error 2: no processes found to kill
- if [ "$rc" == 1 ]; then
- failure $"$STRING"
- else
- success $"$STRING"
- fi
- echo
- return $rc
-}
-
-# See how we were called.
-case "$0" in
- *halt)
- message=$"Halting system..."
- command="/sbin/halt"
- ;;
- *reboot)
- message=$"Please stand by while rebooting the system..."
- command="/sbin/reboot"
- kexec_command="/sbin/kexec"
- ;;
- *)
- echo $"$0: call me as 'halt' or 'reboot' please!"
- exit 1
- ;;
-esac
-case "$1" in
- *start)
- ;;
- *)
- echo $"Usage: $0 {start}"
- exit 1
- ;;
-esac
-
-# Kill all processes.
-[ "${BASH+bash}" = bash ] && enable kill
-
-# Find mdmon pid's and omit killing them
-OMITARGS=
-for i in /dev/md/*.pid; do
- if [ ! -r "$i" ]; then
- continue
- fi
- OMITARGS="$OMITARGS -o $(cat $i)"
-done
-
-kill_all $"Sending all processes the TERM signal..." -15 $OMITARGS
-# No need to sleep and kill -9 if no processes to kill were found
-if [ "$?" == 0 ]; then
- sleep 2
- kill_all $"Sending all processes the KILL signal..." -9 $OMITARGS
-fi
-
-# Write to wtmp file before unmounting /var
-/sbin/halt -w
-
-# Save mixer settings, here for lack of a better place.
-if [ -s /etc/alsa/alsactl.conf ] && [ -x /sbin/alsactl ] && [ -w /etc/asound.state ]; then
- action $"Saving mixer settings" /sbin/alsactl -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --ignore store
-fi
-
-# Save random seed
-touch /var/lib/random-seed
-chmod 600 /var/lib/random-seed
-action $"Saving random seed: " dd if=/dev/urandom of=/var/lib/random-seed count=1 bs=512 2>/dev/null
-
-[ -x /sbin/hwclock ] && action $"Syncing hardware clock to system time" /sbin/hwclock --systohc
-
-# Try to unmount tmpfs filesystems to avoid swapping them in. Ignore failures.
-tmpfs=$(awk '$2 ~ /^\/($|proc|dev)/ { next; }
- $3 == "tmpfs" { print $2; }' /proc/mounts | sort -r)
-[ -n "$tmpfs" ] && fstab-decode $UMOUNT $tmpfs 2>/dev/null
-
-# Turn off swap, then unmount file systems.
-[ -f /proc/swaps ] && SWAPS=$(awk '! /^Filename/ { print $1 }' /proc/swaps)
-if [ -n "$SWAPS" ]; then
- action $"Turning off swap: " swapoff $SWAPS
- for dst in $SWAPS; do
- if [[ "$dst" == /dev/mapper* ]] \
- && [ "$(dmsetup status "$dst" | cut -d ' ' -f 3)" = crypt ]; then
- backdev=$(/sbin/cryptsetup status "$dst" \
- | awk '$1 == "device:" { print $2 }')
- /sbin/cryptsetup remove "$dst"
- fi
- done
-fi
-
-[ -x /sbin/quotaoff ] && action $"Turning off quotas: " /sbin/quotaoff -aug
-
-# Unmount file systems, killing processes if we have to.
-# Unmount loopback stuff first
-__umount_loopback_loop
-
-# Unmount RPC pipe file systems
-__umount_loop '$3 ~ /^rpc_pipefs$/ || $3 ~ /^rpc_svc_gss_pipefs$/ {print $2}' \
- /proc/mounts \
- $"Unmounting pipe file systems: " \
- $"Unmounting pipe file systems (retry): " \
- -f
-
-LANG=C __umount_loop '$2 ~ /^\/$|^\/proc|^\/cgroup|^\/sys\/fs\/cgroup|^\/dev/{next}
- $3 == "tmpfs" || $3 == "proc" {print $2 ; next}
- $3 ~ /(loopfs|autofs|nfs|cifs|smbfs|ncpfs|sysfs)/ {next}
- /(^none|^\/dev\/ram|^\/dev\/root$)/ {next}
- {print $2}' /proc/mounts \
- $"Unmounting file systems: " \
- $"Unmounting file systems (retry): " \
- -f
-
-[ -f /proc/bus/usb/devices ] && $UMOUNT /proc/bus/usb
-
-[ -f /etc/crypttab ] && halt_crypto
-
-# remove the crash indicator flag
-rm -f /.autofsck
-
-# Try all file systems other than root, essential filesystems and RAM disks,
-# one last time.
-awk '$2 !~ /\/(|dev|proc|selinux|cgroup|sys)$/ && $1 !~ /(^\/dev\/ram|cgroup)/ { print $2 }' \
- /proc/mounts | sort -r | \
- while read line; do
- fstab-decode $UMOUNT -f $line
-done
-
-if [ -x /sbin/halt.local ]; then
- /sbin/halt.local
-fi
-
-# Tell init to re-exec itself.
-kill -TERM 1
-
-# Remount read only anything that's left mounted.
-# echo $"Remounting remaining filesystems readonly"
-mount | awk '{ print $1,$3 }' | while read dev dir; do
- fstab-decode mount -n -o ro,remount $dev $dir
-done
-
-# If we left mdmon's running wait for the raidsets to become clean
-if [ -n "$OMITARGS" ]; then
- mdadm --wait-clean --scan
-fi
-
-# Now halt or reboot.
-echo $"$message"
-if [ -f /fastboot ]; then
- echo $"On the next boot fsck will be skipped."
-elif [ -f /forcefsck ]; then
- echo $"On the next boot fsck will be forced."
-fi
-
-# Shutdown UPS drivers
-if [ "$command" = /sbin/halt ] && [ -f /etc/sysconfig/ups ]; then
- . /etc/sysconfig/ups
- if [ -z $POWERDOWNFLAG ]; then
- POWERDOWNFLAG=/etc/killpower
- fi
- if [ "$SERVER" = "yes" ] && [ -f $POWERDOWNFLAG ]; then
- /sbin/upsdrvctl shutdown
- fi
-fi
-
-# Turn off UPS in powerfail situation
-if [ -x /etc/apcupsd/apccontrol -a -f /etc/apcupsd/powerfail ]; then
- /etc/apcupsd/apccontrol killpower
-fi
-
-# First, try kexec. If that fails, fall back to rebooting the old way.
-[ -n "$kexec_command" ] && $kexec_command -e -x >& /dev/null
-
-HALTARGS="-d"
-[ "$INIT_HALT" != "HALT" ] && HALTARGS="$HALTARGS -p"
-
-exec $command $HALTARGS