[CentOS] Run one-time startup script

Wed Sep 25 08:58:51 UTC 2013
Kai Schaetzl <maillists at conactive.com>

Reindl Harald wrote on Fri, 20 Sep 2013 14:32:46 +0200:

> /etc/rc.d/rc.local

Thanks for all the answers.

First, I omitted to explicitely state that these are web servers. There is 
no dhcp, only one or, in a few cases, a few IP static IP addresses. Mostly 
Centos 5. Changing the data is *not* the problem. As already said this 
will mostly be done by replacing config files (cp -a, not mv, this assures 
it can be done even more than once without a problem, replacement 
operations in files always ask for trouble if something non-standard 
happens, not to mention one has to code this - it's easier just to provide 
the correct new files), and by reading in a sql command that replaces an 
IP address in some tables.

The big question is when and how to do this.

rc.local seems to be a good place for reading in the sql command. But it
doesn't seem to be a good place for all the other commands, especially the 
initial network setup. It's executed *after* all ini stuff is done, e.g. 
all daemons and network are started. Problem is that some network services 
may hang the whole machine for a minute or longer if they cannot establish 
networking (which would be the case with wrong data either for the ifcfg 
files or the config file of the daemon). At the moment I know of only one 
daemon which behaves this way (bigsister), but I may have forgotten about 
others. I don't want to wait until the timeout kicks in, the init 
continues and rc.local eventually issues a service network restart.

So, I would rather do all the "replace file" operations before any of that 
init stuff gets done. Is this possible without much ado? Or should I 
rather do the "replace file" operations at shutdown (how, when?) and 
execute only the sql command from rc.local? Google suggests a file 
/etc/rc.shutdown (or rc.local.shutdown?) which, if I understand correctly, 
would be carried out after the init stuff for the shutdown (rc0) has been 
done.

Kai