Debian is great but sometimes basic simple things are missing so we have to step in.
For example, Debian is coming by default with /etc/rc.local where you can put your custom commands which are automatically executed on startup. But what about custom stop script to be executed on shutdown or reboot? This is missing.
No problem! All you can do is follow the instructions below.
1. Edit or replace /etc/init.d/rc.local with this one:
root@pluto:~# cat /etc/init.d/rc.local #! /bin/sh ### BEGIN INIT INFO # Provides: rc.local # Required-Start: $all # Required-Stop: $all # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Run /etc/rc.local if it exist ### END INIT INFO PATH=/sbin:/usr/sbin:/bin:/usr/bin . /lib/init/vars.sh . /lib/lsb/init-functions do_start() { if [ -x /etc/rc.local.start ]; then [ "$VERBOSE" != no ] && log_begin_msg "Running local boot scripts (/etc/rc.local.start)" /etc/rc.local.start ES=$? [ "$VERBOSE" != no ] && log_end_msg $ES return $ES fi } do_stop() { if [ -x /etc/rc.local.stop ]; then [ "$VERBOSE" != no ] && log_begin_msg "Running local boot scripts (/etc/rc.local.stop)" /etc/rc.local.stop ES=$? [ "$VERBOSE" != no ] && log_end_msg $ES return $ES fi } case "$1" in start) do_start ;; restart|reload|force-reload) echo "Error: argument '$1' not supported" >&2 exit 3 ;; stop) do_stop ;; *) echo "Usage: $0 start|stop" >&2 exit 3 ;; esac
2. Copy/move /etc/rc.local
into 2 files: /etc/rc.local.stop
and /etc/rc.local.start
.
root@pluto:~# cat /etc/rc.local #!/bin/sh -e # # rc.local.stop # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. exit 0 root@pluto:~# cp /etc/rc.local /etc/rc.local.start root@pluto:~# mv /etc/rc.local /etc/rc.local.stop root@pluto:~# chmod +x /etc/rc.local.*
3. Update startup sequence for /etc/init.d/rc.local
:
root@pluto:~# update-rc.d -f rc.local remove update-rc.d: using dependency based boot sequencing root@pluto:~# update-rc.d rc.local defaults update-rc.d: using dependency based boot sequencing root@pluto:~# ls -l /etc/rc?.d/*local* lrwxrwxrwx 1 root root 18 Dec 11 15:27 /etc/rc0.d/K01rc.local -> ../init.d/rc.local lrwxrwxrwx 1 root root 18 Dec 11 15:27 /etc/rc1.d/K01rc.local -> ../init.d/rc.local lrwxrwxrwx 1 root root 18 Dec 11 15:27 /etc/rc2.d/S18rc.local -> ../init.d/rc.local lrwxrwxrwx 1 root root 18 Dec 11 15:27 /etc/rc3.d/S18rc.local -> ../init.d/rc.local lrwxrwxrwx 1 root root 18 Dec 11 15:27 /etc/rc4.d/S18rc.local -> ../init.d/rc.local lrwxrwxrwx 1 root root 18 Dec 11 15:27 /etc/rc5.d/S18rc.local -> ../init.d/rc.local lrwxrwxrwx 1 root root 18 Dec 11 15:27 /etc/rc6.d/K01rc.local -> ../init.d/rc.local