slackware-current/source/a/sysvinit-scripts/scripts/rc.K
Patrick J Volkerding d8095c1e90 Wed Jun 13 05:43:00 UTC 2018
a/dcron-4.5-x86_64-7.txz:  Rebuilt.
  Added init script and defaults file.
  Moved TMPDIR to /run/cron.
  Thanks to Robby Workman and shasta.
a/efibootmgr-16-x86_64-1.txz:  Upgraded.
a/efivar-36-x86_64-1.txz:  Added.
a/elilo-3.16-x86_64-7.txz:  Rebuilt.
a/glibc-solibs-2.27-x86_64-4.txz:  Rebuilt.
  Don't restart init in the install script, let rc.6 handle it.
a/haveged-1.9.2-x86_64-1.txz:  Added.
a/pkgtools-15.0-noarch-18.txz:  Rebuilt.
  setup.services: add support for rc.atd and rc.crond
a/sysvinit-scripts-2.1-noarch-10.txz:  Rebuilt.
  rc.6: restart init when shutting down - this prevents it from holding file
  handles to removed/upgraded versions of the glibc shared libraries which
  would interfere with shutdown.
  rc.K: use full path to telinit
  rc.M: start rc.atd and rc.crond
  rc.M: don't remove cron tempfiles (moved to /run/cron)
  rc.S: start rc.haveged
ap/at-3.1.20-x86_64-3.txz:  Rebuilt.
  Added init script and defaults file.
l/glibc-2.27-x86_64-4.txz:  Rebuilt.
  Don't restart init in the install script, let rc.6 handle it.
l/glibc-i18n-2.27-x86_64-4.txz:  Rebuilt.
l/glibc-profile-2.27-x86_64-4.txz:  Rebuilt.
l/gnu-efi-3.0.8-x86_64-1.txz:  Upgraded.
2018-06-13 09:44:21 +02:00

121 lines
3.1 KiB
Bash

#! /bin/sh
#
# rc.K This file is executed by init when it goes into runlevel
# 1, which is the administrative state. It kills all
# daemons and then puts the system into single user mode.
# Note that the file systems are kept mounted.
#
# Version: @(#)/etc/rc.d/rc.K 3.1415 Sat Jan 13 13:37:26 PST 2001
#
# Author: Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
# Modified by: Patrick J. Volkerding <volkerdi@slackware.com>
#
# Set the path.
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
# Load any needed keyboard mappings:
if [ -x /etc/rc.d/rc.keymap ]; then
/etc/rc.d/rc.keymap
fi
# If there are SystemV init scripts for this runlevel, run them.
if [ -x /etc/rc.d/rc.sysvinit ]; then
/etc/rc.d/rc.sysvinit
fi
# Try to turn off quota:
if grep -q quota /etc/fstab ; then
if [ -x /sbin/quotaoff ]; then
echo "Turning off filesystem quotas."
/sbin/quotaoff -a
fi
fi
# Try to turn off accounting:
if [ -x /sbin/accton -a -r /var/log/pacct ]; then
/sbin/accton off
fi
# Run any local shutdown scripts:
if [ -x /etc/rc.d/rc.local_shutdown ]; then
/etc/rc.d/rc.local_shutdown stop
fi
# Stop the Apache web server:
if [ -x /etc/rc.d/rc.httpd ]; then
/etc/rc.d/rc.httpd stop
fi
# Stop the Samba server:
if [ -x /etc/rc.d/rc.samba ]; then
/etc/rc.d/rc.samba stop
fi
# Shut down the NFS server:
if [ -x /etc/rc.d/rc.nfsd ]; then
/etc/rc.d/rc.nfsd stop
fi
# Kill any processes (typically gam) that would otherwise prevent
# unmounting NFS volumes:
unset FUSER_DELAY
for dir in $(/bin/mount | grep 'type nfs ' | cut -d ' ' -f 3 ) ; do
echo "Killing processes holding NFS mount $dir open..."
# Background this to prevent fuser from also blocking shutdown:
/usr/bin/fuser -k -M -m $dir &
FUSER_DELAY=5
done
# If fuser was run, let it have some delay:
if [ ! -z "$FUSER_DELAY" ]; then
sleep $FUSER_DELAY
fi
# Unmount any NFS, SMB, or CIFS filesystems:
echo "Unmounting remote filesystems:"
/bin/umount -v -a -l -f -r -t nfs,smbfs,cifs | tr -d ' ' | grep successfully | sed "s/:successfullyunmounted/ has been successfully unmounted./g"
# Shut down PCMCIA devices:
if [ -x /etc/rc.d/rc.pcmcia ] ; then
/etc/rc.d/rc.pcmcia stop
# The cards might need a little extra time here to deactivate:
sleep 5
fi
# Terminate acpid before syslog:
if [ -x /etc/rc.d/rc.acpid -a -r /var/run/acpid.pid ]; then # quit
/etc/rc.d/rc.acpid stop
fi
# Kill all processes.
OMITPIDS="$(for p in $(pgrep mdmon); do echo -o $p; done)" # Don't kill mdmon
echo
echo "Sending all processes the SIGHUP signal."
killall5 -1 $OMITPIDS
echo -n "Waiting for processes to hang up"
for loop in 0 1 2 3 4 5 ; do
sleep 1
echo -n "."
done
echo
echo "Sending all processes the SIGTERM signal."
killall5 -15 $OMITPIDS
echo -n "Waiting for processes to terminate"
for loop in 0 1 2 3 4 5 ; do
sleep 1
echo -n "."
done
echo
echo "Sending all processes the SIGKILL signal."
killall5 -9 $OMITPIDS
echo -n "Waiting for processes to exit"
for loop in 0 1 2 3 4 5 ; do
sleep 1
echo -n "."
done
echo
# Now go to the single user level
echo "Going to single user mode..."
/sbin/telinit -t 1 1