A daemon, or system service, is a background process usually started during the initial boot sequence by Init. Daemons typically run independent of users, waiting for system events to occur and providing services in response. Some common daemons include:
sshd - listens for and manages incoming ?SSH connections
acpid - listens for power management events and executes scripts based on them
apache - provides a local HTTP web server
Daemons in Debian
Debian makes use of System V-style init scripts for daemon management. This allows daemons to operate conditionally, based on the current RunLevel of the computer. For example, a daemon can be configured to run only when the computer is in single-user mode (runlevel 1) or, more commonly, when in multi-user mode (runlevels 2-5). For more information, see Init and RunLevel.
A brief introduction to Debian init scripts
Daemon init scripts are stored in /etc/init.d/ along with the system's other boot-time init scripts.
When a daemon is enabled or disabled, symbolic links targeting the respective init script are created or removed under the various /etc/rc*.d/ directories, corresponding to the RunLevel(s) in which the daemon is to run.
Daemon init scripts are treated as configuration files by dpkg. This means they remain on the system after a package is uninstalled, unless the 'purge' option is used.
Common daemon controls
Most daemon scripts accept a common set of options, which can be passed directly to the script at the command line, for example:
# service ssh restart Restarting OpenBSD Secure Shell server: sshd.
A brief description of the most common options follows:
start: start a service
stop: stop a service
restart: restart a service without reloading its job config file
reload: send a SIGHUP signal to running process
status: return the status of a service
Starting and stopping daemons in this manner is temporary and will not survive a reboot. Refer to the next section to enable/disable daemons on a permanent basis.
Note: Many daemons provide essential services to a working Debian installation; others can pose unnecessary security risks when enabled carelessly. Caution should be used whenever managing daemons. When in doubt, refer to the documentation of the daemon itself.
To (re)enable a daemon (using the default settings) run the following command, where <daemon> corresponds to the name of the init script as listed in /etc/init.d/:
# insserv <daemon>
To disable a daemon at its default runlevels, execute the following command, where <daemon> corresponds to the name of the init script as listed in /etc/init.d/:
# insserv -r <daemon>
For more detail on what these commands do, refer to the insserv manpage.
These commands assume the daemon's script in /etc/init.d has the appropriate LSB headers. For more information on Debian's new way of enabling/disabling scripts see https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot and https://wiki.debian.org/LSBInitScripts.
GUI utilities for daemon management