The script /etc/rc.local runs at boot time just before user login. But what about a system-wide shutdown script?
Some linux distributions include an /etc/rc.shutdown script that runs at system shutdown, after user logout but before any services or daemons are stopped. It's not difficult to add to ubuntu.
Copy the following text to a file and name it
"rc.shutdown" I've included a few comments you can change or delete,
and the 3 lines that end in "#optional" can be left out if you like.
They just put a little message in the shutdown splash screen.
(don't change the first line, "
#! /bin/sh # Don't delete the above line or put anything before it. # Calls /etc/rc.shutdown before any other shutdown scripts in # rc0.d or rc6.d are run. Implements a shutdown analog to rc.local. # Use a link number of K00 to ensure rc.shutdown is called before # any services or daemons are stopped. # # NOTE: Starting runlevel 0 for shutdown or runlevel 6 for # reboot does NOT run the Snn... links with "start" # Entering runlevel 0 or 6 causes ALL links to be run with the argument # "stop" See /usr/share/doc/sysv-rc/README.runlevels PATH=/sbin:/bin:/usr/sbin:/usr/bin . /lib/lsb/init-functions #optional case "$1" in stop) if [ -x /etc/rc.shutdown ]; then log_begin_msg "Running local shutdown scripts (/etc/rc.shutdown)" #optional /etc/rc.shutdown log_end_msg $? #optional fi ;; restart|reload|force-reload) echo "Error: argument '$1' not supported" >&2 exit 3 ;; start) # no op in case link is installed in a normal runlevel ;; *) echo "Usage: $0 start|stop" >&2 exit 3 ;; esac
Put the file in /etc/init.d with root ownership and execute permissions. From a shell prompt in the directory where you have saved the file, you can use the commands:
sudo cp rc.shutdown /etc/init.d
sudo chmod +x /etc/init.d/rc.shutdown
Delete or rename your original, non-root copy of rc.shutdown; we'll be using the same name for another, different file.
Copy the next file, also named rc.shutdown, to /etc/ with executable permission. This is the file where you can include any commands or scripts you want to run at shutdown. The comments in the file explain its use./etc/rc.shutdown
#! /bin/sh # Commands or scripts called from this file will be run at shutdown, # before any services or processes are stopped by the normal # shutdown scripts. By default it does nothing. Your commands or # script should exit 0 for success or other value on error. # Delete the "exit 0" line from this file or make sure your commands # are placed before that line. exit 0
sudo cp rc.shutdown /etc
sudo chmod +x /etc/rc.shutdown
I know, it's a little confusing using 2 different files with the same name, and easy enough to change if you like, but I've followed the same naming convention used for the /etc/rc.local and /etc/init.d/rc.local startup files.
The last thing necessary to actually have this script run at shutdown, is to make the proper links to /etc/init.d/rc.shutdown from the /etc/rc0.d (shutdown runlevel) and /etc/rc6.d (reboot runlevel) directories. The script must run before any system services are stopped, so name the link "K00rc.shutdown" (Those are zeros, not the letter 'O') Use these commands:
sudo ln -s /etc/init.d/rc.shutdown /etc/rc0.d/K00rc.shutdown
sudo ln -s /etc/init.d/rc.shutdown /etc/rc6.d/K00rc.shutdown
You can also use the
update-rc.d command line utility
to change init script links. (Try
for details) See modifying runlevels
for more information.
* * *