4.6. Managing and Configuring ServicesFedora starts a number of programs automatically when the system is booted. These services (sometimes called Disk And Execution MONitors, or daemons) perform automatic actions on the local computer and, in some cases, perform operations for remote computers on the network, such as sharing files and serving web pages. Each service consumes memory and processor time, and each network service may provide a weak spot for an attack against your system. Disabling unused services can reduce your boot time, speed up your system, and reduce your security risk. 4.6.1. How Do I Do That?Select the menu option SystemAdministrationServices (in KDE, it is SystemServices) to start the system-config-services tool, shown in Figure 4-6. Figure 4-6. Services configuration windowThe configuration of the current runlevel is shown by default. Every service with a checkmark in front of it will be started when that runlevel is entered; to add or clear a checkmark, click on the checkbox. Click on a service name to see a description of that service and its current status (running or stopped). Click on the Save icon (or FileSave Changes) when you've configured the services to your liking; your changes will take effect next time you change runlevels or boot the system. You can edit the settings for another runlevel (3, 4, 5, or all three at the same time) using options on the Edit Runlevel menu. To start, stop, or restart a service immediately, regardless of whether it's configured to start automatically at boot time, click on the service name and then click on the Start, Stop, or Restart icon. 4.6.1.1. Configuring services using a character user interfaceIf you're not running a graphical user interface, you can use ntsysv, a character-mode program similar to system-config-services: # ntsysv This will configure the current runlevel. To configure a different runlevel, use the --level option: # ntsysv --level 4 The display shown in Figure 4-7 will appear. Figure 4-7. The ntsysv displayUse the arrow keys to select a service, the spacebar to check/uncheck a service, and Tab to switch between the service list and the buttons. When you are done, press Tab to advance to the OK button and then press Enter. 4.6.1.2. Configuring services from the command lineThe chkconfig command provides an easy way to enable and disable services. The --list option displays the current service configuration: $ chkconfig --list NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off NetworkManagerDispatcher 0:off 1:off 2:off 3:off 4:off 5:off 6:off acpid 0:off 1:off 2:off 3:on 4:on 5:on 6:off amd 0:off 1:off 2:off 3:off 4:off 5:off 6:off anacron 0:off 1:off 2:on 3:on 4:on 5:on 6:off apmd 0:off 1:off 2:on 3:on 4:on 5:on 6:off arptables_jf 0:off 1:off 2:on 3:on 4:on 5:on 6:off ...(Lines snipped)... If you specify a service name, then only the configuration for that service is shown: $ chkconfig --list httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off Note that each of the seven runlevels is shown, even though the configurations for runlevels 0 and 6 are ignored except for K files (since 0 is halt and 6 is reboot). To enable a service in a runlevel, use the --level option to specify the runlevel along with the on argument: # chkconfig --level 4 httpd on # chkconfig --list httpd httpd 0:off 1:off 2:off 3:off 4:on 5:off 6:off To disable it, use the off argument: # chkconfig --level 4 httpd off # chkconfig --list httpd httpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off To reset a service to its default configuration, use the reset argument. The configuration will be reset for the runlevel you specify, or for all runlevels if you don't include a --level option: # chkconfig --level 4 httpd reset # chkconfig httpd reset 4.6.1.3. Managing services from the command lineThe service command is used to manage running services. Two arguments are always used: first, the name of the service being managed, and second, the action that is to be performed. The most common actions are:
For example, to start the web service (named httpd): # service httpd start Starting httpd: [ OK ] You can then check its status: # service httpd status httpd (pid 13154 13153 13152 13151 13150 13149 13148 13147 13117) is running... The pid values printed are the process IDs of the web server processes. To make the web server reload its configuration file after it's been edited: # service httpd reload Reloading httpd: [ OK ] Finally, to stop the web server: # service httpd stop Stopping httpd: [ OK ] 4.6.2. How Does It Work?Services are managed by scripts in the /etc/rc.d/init.d directory; the name of each script corresponds to the name of the service. Each runlevel has its own directory named /etc/rc.d/rc<X> .d, where <X> is the runlevel. If you examine a runlevel directory, you'll see names beginning with K or S, followed by a 2-digit number, followed by a service name: $ ls /etc/rc.d/rc5.d K01rgmanager K36postgresql K90isicom K01yum K45arpwatch K92ipvsadm K02NetworkManager K46radvd K94diskdump K02NetworkManagerDispatcher K50netdump S01sysstat K05innd K50snmpd S04readahead_early K05saslauthd K50snmptrapd S05kudzu K09dictd K50tux S06cpuspeed ...(Lines snipped)... K35vncserver K85mdmpd S97messagebus K35winbind K85zebra S98cups-config-daemon K36dhcp6s K87multipathd S98haldaemon K36lisa K89netplugd S99local K36mysqld K89rdisc All of these files are actually symbolic links to service scripts in /etc/rc.d/init.d, as shown by a long listing: $ cd /etc/rc.d/rc5.d $ ls -l S90xfs lrwxrwxrwx 1 root root 13 Oct 5 14:37 S90xfs -> ../init.d/xfs The scripts that start with S are used to start services, and the scripts that start with K are used to kill (stop) services. K scripts are only used when switching between runlevels after the system has been booted. The digits in the filename are used to control the sequence in which the scripts are executed. This is essential because some services rely on others; for example, the web server relies on the network being up and running, so the network script must be run first. When you examine the top of a service script, you will find a comment line containing the keyword chkconfig: followed by three arguments: $ head /etc/rc.d/rc5.d/S90xfs #!/bin/bash # # Id:$ # # xfs: Starts the X Font Server # # Version: @(#) /etc/init.d/xfs 2.0 # # chkconfig: 2345 90 10 # description: Starts and stops the X Font Server at boot time and shutdown. \ The first argument (2345) is a list of the runlevels in which this service will run by default; this information is used to initially set up the system and to handle chkconfig's reset argument. If the default for this service is to have it turned off in all runlevels, the value - is used. The second argument is the sequence number (00 through 99) for the start link; the value 90 shown here means that the name of the start link will be S90xfs. The third argument is the sequence number for the kill link, which in this case yields a kill-link name of K10xfs. When service scripts are called, they are passed a keyword such as start, stop, restart, or reload, indicating the action the script must take. 4.6.3. What About...4.6.3.1. ...creating my own runlevel?You can use the system-config-services or chkconfig tools to create a custom set of services for a runlevel and then use that either as the default runlevel or an option on the boot menu. This technique is particularly useful on laptops, which may be used in different locations and need different services in each location. 4.6.3.2. ...creating my own service?To create a service:
You can then configure your service in the same way as any of the other services, using system-config-services, service, and chkconfig. 4.6.4. Where Can I Learn More? |