How to find and configure the services which start when a Linux system boots up
A typical Linux system can be configured to boot into one of 5
different
runlevels.
During the boot process the
init
process looks in the
/etc/inittab
file to find the default runlevel. Having identified the runlevel it
proceeds to execute the appropriate startup scripts located in the
/etc/rc.d sub-directory.
For example if you have a runlevel of 5 configured then the init
process will work through the list of startup scripts located in
/etc/rc.d/rc5.d. These startup scripts start either with the letter "S"
or "K" followed by a number and then a (hopefully) description word.
For example the startup script for NFS (Networked File System) is
typcically S60nfs whilst the stratup script for YUM system might be
called K01yum.
Scripts that start with an "S" are invoked before those prefixed with a
"K". The number in the filename controls the order in which the script
will be executed with that group (either "S" or "K"). You wouldn't, for
example, want to start NFS before the basic networking is up and
running. It is also worth noting that the files in the rc.d
sub-directories are not the actual scripts themselves but rather
symbolic links to the actual files located in
/etc/rc.d/init.d.
There are number of ways to control what services get started wihtout
having to delve into the /etc/rc.d sub-directories yourself.
The command line tool chkconfig (usually located in /sbin) can be used
to list and configure which services get started at boot time. To list
all service settings run the following command:
/sbin/chkconfig --list
This will display a long list of services showing whether or not they
are started up at various runlevels. You may want to narrow the search
down using grep. For example to list the entry for the HTTP daemon you
would do the following:
/sbin/chkconfig
--list | grep httpd
which should result in something like:
httpd
0:off 1:off 2:off
3:on 4:off 5:off 6:off
Alternatively you may just be interested to know what gets started for
runlevel 3:
/sbin/chkconfig
--list | grep '3:on'
chkconfig can also be used to change the settings. If we wanted the
HTTP service to start up when we at runlevel 5 we would issue the
following command:
/sbin/chkconfig
--level 5 httpd on
A number of graphical tools are also available for administering
services. On RedHat 9 you can run the following command:
redhat-config-services
The equivalent command on RedHat Fedora Core is:
system-config-services
The above graphical tools allow you to view which services will start
for each runlevel, add or remove services for each runlevel and also
manually start or stop services.
Another useful tool if you do not have a graphical desktop running or
access via a remote X server is the
ntsysv
command. ntsysv resides in /sbin on most systems. Whilst a convenient
tool when you don't have an X server running the one draw back of
ntsysv is that it only allows you to change the settings for the
current runlevel.