Monday, June 18, 2012

chkconfig Command Examples

As you may know, chkconfig command is used to setup, view, or change services that are configured to start automatically during the system startup.

*** Check Service Startup status:

When you execute chkconfig command only with the service name, it returns true if the service is configured for startup. The following code shows how to check whether a service is configured for startup or not.

# vi check.sh
chkconfig network && echo "Network service is configured"
chkconfig junk && echo "Junk service is configured"

# chmod u+x check.sh

# ./check.sh
Network service is configured

You can also specifically check whether it is configured for a particular run level or not.

# vi check1.sh
chkconfig network --level 3 && echo "Network service is configured for level 3"
chkconfig network --level 1 && echo "Network service is configured for level 1"

# chmod u+x check1.sh

# ./check1.sh
Network service is configured for level 3

*** View Current Status of Startup Services:


The --list option displays ALL the services with the current startup configuration status.

# chkconfig --list
abrtd   0:off   1:off   2:off   3:on    4:off   5:on    6:off
acpid   0:off   1:off   2:off   3:off   4:off   5:off   6:off
atd     0:off   1:off   2:off   3:on    4:on    5:on    6:off
...

To view only the services that are configured to be started during system startup, do the following. Please note that this assumes that your system startup level is 3.
# chkconfig --list | grep 3:on

Note: To view all available system run levels, refer to: http://www.thegeekstuff.com/2011/02/linux-boot-process/

To view the startup configuration of a particular service, grep the output of ‘chkconfig --list’ for that service.
# chkconfig --list | grep network

*** Add a new Service to the Startup


Use --add option to add a specific service to the list of services that will be started during system reboot.

The following example shows how to add a new service (for example, iptables) to the list of services that needs to be started. The ‘chkconfig --add’ command will also turn on level 2, 3, 4 and 5 automatically as shown below.

# chkconfig --list | grep iptables
# chkconfig --add iptables
# chkconfig --list | grep iptables
iptables       0:off   1:off   2:on    3:on    4:on    5:on    6:off

Note: “chkconfig -–add” only adds an existing service to the list of startup. If the service doesn’t exist, you should first install it before adding it to the system startup list.

*** Remove a Service From Startup List


The following example shows that ip6tables services is configured for startup.

# chkconfig --list | grep ip6tables
ip6tables       0:off   1:off   2:off   3:on   4:off   5:off   6:off

To remove it from the startup list, use the --del option as shown below.
# chkconfig --del ip6tables
# chkconfig --list | grep ip6tables

*** Turn-on or Turn-off a Service for a Selected Run Level


Sometimes you might not want to delete the whole service. Instead, you might just want to turn the flag on or off for a particular run level (for a particular service).

The following example will turn off nfserver service for level 5
# chkconfig --level 5 nfsserver off

You can also combine multiple levels. The following example will turn off nfsserver for both level 3 and 5.
# chkconfig --level 35 nfsserver off

*** Script Files under rc.d Subdirectories


Whenever you add or remove a service from chkconfig control, it does the following under the /etc/rc.d sub-directories.

When chkconfig --add command is executed, it creates a symbolic link file to start and stop the service under corresponding rc directory.
When chkconfig --del command is executed, it removes the symbolic link file from the corresponding rc directory.

The following example shows that xinetd is enabled for both run level 3 and 5.

So, xinetd will have two files under rc3.d directory, and two files under rc5.d directory. The file that starts with K is used during shutdown (K stands for kill). The file that starts with S is used during startup (S stands for start).

# chkconfig --list | grep xinetd
xinetd                    0:off  1:off  2:off  3:on   4:off  5:on   6:off

xinetd based services:
# cd /etc/rc.d/rc3.d
# ls | grep xinetd
K08xinetd
S14xinetd

# cd /etc/rc.d/rc5.d
# ls | grep xinetd
K08xinetd
S14xinetd

*** rcX.d Directory Changes for Add Operation


When you add a new service to chkconfig control, the default run levels for that service will be turned on automatically, and files will be created under the corresponding rcx directories.

For example, if the nfsserver service doesn’t exist in the chkconfig control, no nfsserver service startup files would be present under /etc/rc.d/rc*.d directories as shown below.

# chkconfig  --list | grep nfsserver
nfsserver                 0:off  1:off  2:off  3:off  4:off  5:off  6:off

# ls /etc/rc.d/rc3.d | grep nfsserver
# ls /etc/rc.d/rc5.d | grep nfsserver

After you add the nfsserver service, you’ll see the symbolic links under these directories.

# chkconfig --add nfsserver
nfsserver                 0:off  1:off  2:off  3:on   4:off  5:on   6:off

# cd  /etc/rc.d/rc3.d
# ls -l | grep nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver -> ../nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../nfsserver

# cd /etc/rc.d/rc5.d
# ls -l | grep nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver -> ../nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../nfsserver

When you turn off the service either using –-del option or –-level option, the corresponding symbolic link file under rcx.d directory will be deleted as shown below.

# chkconfig --level 5 nfsserver off
# ls /etc/rc.d/rc5.d  | grep nfsserver

Special thanks to http://www.thegeekstuff.com \m/