Linux services are applications that run in the background of the Linux operating system, typically without user intervention. Many Linux services are startup services and are started when the system boots, before the user logs in. Linux is a free, open-source program, so there is much variety, and the specific services that are installed by default will vary depending on which Linux distribution is used. Services can be enabled, disabled, managed and even modified by the user.
Some Linux services start, perform a function, and then close. An example is "kudzu," which detects new or modified hardware. Other examples include "random," which generates a random number used for security, and "keytable," which sets up keyboard mappings and the system font.
The other type of service is a daemon, which is a service that always runs. Many of these provide various network services, including the following: "httpd" provides an Apache web server; "inetd," the Internet superserver daemon, starts Transmission Control Protocol/Internet Protocol (TCP/IP) networking services and is responsible for many other network services; "smtp" sends and receives email; and "nfs" allows hosting of a network file server. These services might have different names depending on the Linux distribution; for example, the Apache service is called "httpd" on some distributions and "apache2" on others.
Another set of applications work as daemon services, which are not network-related and provide continuous functionality. Examples include "cron," which is used to execute scheduled tasks; "gpm," which supports mouse functionality; "apmd," which provides advanced power management; and "lpd," the print spooler.
Services run based on a run level, which defines the state of the system, such as single-user login, multi-user login, shutdown and reboot. The file /etc/inittab sets the default run level and points to files, normally stored in /etc/rc.d/; these rc.d scripts define what services start upon entering a runlevel. These scripts also define startup priority and shutdown priority for each service, from 0-100, to define the order in which services start up and shut down.
Some Linux distributions provide a graphical user interface (GUI) to configure services. If this is not available on a particular distribution, some command-line tools still should be available. The "chkconfig" tool can be used to list services, to create or delete services, or to activate or deactivate services. The "ntsysv" tool provides a simple interface to choose which services should be automatically started. Any tools to configure Linux services are simply front ends to the rc.d scripts, and power users can directly modify these scripts to manage services.