If, like me, you want to easily have some program start every time you boot up your Linux server, you need to find and edit the rc.local
file in your file-system. /etc/rc.local
is really a simple place to put shell commands and/or scripts you want to run when booting up.
On my CentOS servers, this file is actually a symlink to /etc/rc.d/rc.local
. It is also linked the same way on my main desktop PC, a system running on Fedora.
[[email protected] ~]$ ls -l /etc/rc.local lrwxrwxrwx 1 root root 13 Mar 19 17:07 /etc/rc.local -> rc.d/rc.local
On my laptop, a Ubuntu system, it is just a regular executable file at /etc/rc.local
.
Example rc.local
Recently, I developed a BASH script to block a list of IP addresses from accessing this server. Naturally, I want this script now to run every time this server is boot up. The script was saved to /usr/share/gid/scripts/iproute-block-list.sh
on this CentOS server. Next, I edited the rc.local
file on this server, and to the bottom of the file, I inserted the command line to run the script.
This is how my server’s rc.local
file looks today:
#!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local # Inserted by J de Silva on 2013/04/27. # The following script will block IP addresses and blocks of IP addresses. /usr/share/gid/scripts/iproute-block-list.sh
If you go through the documentation inside CentOS: Running Additional Programs at Boot Time, you will see that rc.local
runs on 2 occasions:
- at boot time
- when changing runlevels