How do I make Ubuntu Servers run services at boot time, in a specific order?
I have read a bit about Upstart
, init.d
and inittab
, and I'm not sure what's the right approach for doing it.
Thanks,
Udi
How do I make Ubuntu Servers run services at boot time, in a specific order?
I have read a bit about Upstart
, init.d
and inittab
, and I'm not sure what's the right approach for doing it.
Thanks,
Udi
Look into the command update-rc.d
, which is the standard Debian/Ubuntu way to set up starting and halting of services. The file /etc/init.d/skeleton
is also a quite nice template for making your own services quickly and with correct behaviour.
Aside from upstart (which I don't know much about), order is determined by a number in the rcX.d directory (where X is the run level).
Usually, in Ubuntu, normal use is runlevel 2. You put your script in /etc/init.d/
and make a symbolic link to /etc/rcX.d
with the following syntax:
If your script is number42
do this:
$ sudo cp number42 /etc/init.d
$ sudo ln -s /etc/init.d/number42 /etc/rc2.d/S99number42
Stopping it will be the same but with a K and in runlevel 0 and 6.
sysv-rc-conf can help you visualize which scripts run on which runlevel.
sysv-rc-conf http://ubuntu-tweak.com/wp-content/uploads/2007/09/sysv-rc-conf.png
You mention in a specific order, but if you mean you have multiple processes, and you need them to run in a specified order, but after all the other boot-time processes have started, you can take the easy way out and use /etc/rc.local.
Simply put all your commands in that file in the order you specify, it will be executed by /bin/sh after all other boot processes have started. Make sure that your process detaches, or append an & to the end of each line or your boot will hang!
The above solutions are more robust, this way is more quick-n-dirty.