| 1 | #!/bin/bash |
| 2 | # |
| 3 | # /etc/rc.shutdown: system shutdown script |
| 4 | # |
| 5 | |
| 6 | # Load configuration |
| 7 | . /etc/rc.conf |
| 8 | |
| 9 | # Set linefeed mode to avoid staircase effect |
| 10 | /bin/stty onlcr |
| 11 | |
| 12 | echo "The system is coming down. Please wait." |
| 13 | |
| 14 | if [ "$PREVLEVEL" = "2" ]; then |
| 15 | # Shutdown services |
| 16 | if [ "${SERVICES[*]}" ]; then |
| 17 | for service in "${SERVICES[@]}"; do |
| 18 | R_SERVICES=($service ${R_SERVICES[@]}) |
| 19 | done |
| 20 | for service in "${R_SERVICES[@]}"; do |
| 21 | /etc/rc.d/$service stop &> /tmp/rc.$$ |
| 22 | /usr/bin/logger -t $service -f /tmp/rc.$$ |
| 23 | /bin/rm -f /tmp/rc.$$ |
| 24 | done |
| 25 | fi |
| 26 | fi |
| 27 | |
| 28 | # Terminate all processes |
| 29 | /sbin/killall5 -15 |
| 30 | /bin/sleep 5 |
| 31 | /sbin/killall5 -9 |
| 32 | |
| 33 | # Save random seed |
| 34 | /bin/dd if=/dev/urandom of=/var/lib/urandom/seed count=1 2> /dev/null |
| 35 | |
| 36 | # Save system clock |
| 37 | /sbin/hwclock --systohc |
| 38 | |
| 39 | # Write to wtmp file before unmounting |
| 40 | /sbin/halt -w |
| 41 | |
| 42 | # Turn off swap |
| 43 | /sbin/swapoff -a |
| 44 | |
| 45 | # Unmount file systems |
| 46 | /bin/umount -a -r -t nosysfs,noproc |
| 47 | if [ -x /sbin/lvm ]; then |
| 48 | /sbin/vgchange --ignorelockingfailure -a n |
| 49 | fi |
| 50 | /bin/umount -a -r |
| 51 | |
| 52 | # Remount root filesystem read-only |
| 53 | /bin/mount -n -o remount,ro / |
| 54 | |
| 55 | # Power off or reboot |
| 56 | if [ "$RUNLEVEL" = "0" ]; then |
| 57 | /sbin/poweroff -d -f -i |
| 58 | else |
| 59 | /sbin/reboot -d -f -i |
| 60 | fi |
| 61 | |
| 62 | # End of file |