Difference between revisions of "Daemons"

From ArchWiki
Jump to: navigation, search
(Starting on Boot: Account for systemd systems)
(Systemd Systems)
Line 37: Line 37:
The counter-parts to the previous commands are {{ic|stop}} and {{ic|disable}}.
The counter-parts to the previous commands are {{ic|stop}} and {{ic|disable}}.
You can read more [[Systemd#Systemd_commands|here]]
==Performing daemon actions manually==
==Performing daemon actions manually==

Revision as of 20:30, 28 August 2012

zh-CN:Daemon A daemon is a program that runs in the background, waiting for events to occur and offering services. A good example is a web server that waits for a request to deliver a page or a ssh server waiting for someone trying to log in. While these are full featured applications, there are daemons whose work is not that visible. Daemons are for tasks like writing messages into a log file (e.g. syslog, metalog) or keeping your system time accurate (e.g. ntpd).

Note: The word daemon is sometimes used for a class of programs that are started at boot but have no process which remains in memory. They are called daemons simply because they utilize the same startup/shutdown framework (e.g. /etc/rc.d/ scripts) used to start traditional daemons. For example, the /etc/rc.d scripts for alsa and cpufreq provide persistent configuration support for their perspective kernel modules but do not start additional background processes to service requests or respond to events.

From the user's perspective the distinction is typically not significant unless the user tries to look for the "daemon" in a process list.

Starting on Boot

A default install of Arch Linux will leave you with very few services (or daemons) enabled during boot. You can add or remove services by editing the DAEMONS array in your rc.conf file. It will initially look something like this:

DAEMONS=(syslog-ng network netfs crond)

They will start in the order you have them listed. You can disable one and keep it in the array by prefixing it with an exclamation mark (!). You can also have them start in the background by adding the @ symbol in front of it.

Daemon scripts are stored in /etc/rc.d/. You can print the list of all the available daemons on your system, along with their current status, with:

$ rc.d list

Systemd Systems

To see a list of running units (some of which will be daemons, amongst other things), type:

$ systemctl list-units

To see all available ones, add --all to the end of a command.

To start a daemon, use:

# systemctl start <name>.service

To enable it at boot, in the above replace start with enable.

The counter-parts to the previous commands are stop and disable.

You can read more here

Performing daemon actions manually

Every daemon has a series of actions that can be called with specific commands: usually there are at least start, stop, and restart. You can issue each with:

# /etc/rc.d/daemon-name {start|stop|restart|...}

A completely equivalent way is:

# rc.d {start|stop|restart|...} daemon-name-1 daemon-name-2 daemon-name-3 ...

which, as it is clear from the example, works also with a list of daemons, calling for each the given action.

For a list of all the available commands for a specific daemon, check its documentation, or just open the script in a text viewer.


You do not have to add any more services, if you do not feel the need. However, a typical desktop user will add at least CUPS and dbus. As you install new services, you will have to manually add them to the DAEMONS array in /etc/rc.conf (located at the very end).

Starting Daemons in Background

This is helpful for starting a service and letting the next service start before the previous one has finished. Which services to start background depends on your needs. Do not background anything you need immediately. Here is an example:

DAEMONS=(syslog-ng gensplash dbus network netfs @avahi-daemon @samba @crond @openntpd @cupsd @mpd)

Starting openntpd in the background could lead to synchronization errors between the actual time and the time stored on your computer. If you recognize an increasing time difference between your desktop clock and the actual time, try to start the openntpd daemon normally and not in the background.

rc.conf GUI front-ends

rc.conf GUI front-ends allow one to easily change settings in /etc/rc.conf using a graphical application.

List of Daemons

Here is a list of daemons. Note that any package can provide a daemon, so this list will never be complete. Please feel free to add any missing daemons here, in alphabetical order. For each daemon the name of the script (for initscripts) and of the service (for systemd) is given.

Initscripts Systemd Description
acpid acpid.service Delivers ACPI events.
alsa alsa-store.service


Advanced Linux Sound Architecture; provides device drivers for sound cards.
atd not yet implemented Run jobs queued for later execution.
avahi-daemon avahi-daemon.service Allows programs to automatically find local network services.
avahi-dnsconfd avahi-dnsconfd.service
clamav clamd.service


cpupower cpupower.service Userspace tools for the kernel cpufreq subsystem
craftbukkit not yet implemented CraftBukkit Minecraft server
crond cronie.service Daemon to schedule and time events. The daemon name crond is used by at least two packages, cronie and dcron.
cupsd cupsd.service

or cups.service

Common UNIX Printing System daemon.
dbus dbus.service Message bus system for software communication.
dropboxd not yet implemented Cross-platform file synchronisation with version control.
fam deprecated File Alteration Monitor. (deprecated)
fancontrol fancontrol.service Fan control daemon (part of lm_sensors)
fbsplash not yet implemented Graphical boot splash screen for the user.
ftpd not yet implemented Inetutils ftp daemon
gdm gdm.service (in community/systemd-arch-units) Gnome Display Manager (Login Screen)
git-daemon not yet implemented GIT daemon
gpm gpm.service Console mouse support.
hal deprecated Hardware Abstraction Layer. (Deprecated)
hddtemp hddtemp.service Hard drive temperature monitor daemon
healthd healthd.service A daemon which can be used to alert you in the event of a hardware health monitoring alarm (part of lm_sensors).
iptables iptables.service Load firewall rules.
ip6tables ip6tables.service Load firewall rules for ipv6.
httpd not yet implemented

See Systemd/Services#apache2 for manual configuration.

Apache HTTP Server (Web Server)
hwclock Not a daemon as such, but on shutdown, updates hwclock to compensate for drift. Only run this daemon if ntpd is not running as both daemons adjust the hardware clock.
irqbalance not yet implemented Irqbalance is the Linux utility tasked with making sure that interrupts from your hardware devices are handled in as efficient a manner as possible.
kdm kdm.service KDE Display Manager (Graphical Login)
krb5-kadmind krb5-kadmind.service Kerberos 5 administration server
krb5-kdc krb5-kdc.service Kerberos 5 KDC
krb5-kpropd krb5-kpropd.service Kerberos 5 propagation server
laptop-mode laptop-mode-tools.service Laptop Power Saving Tools
lighttpd lighttpd.service Lighttpd HTTP Server (Web Server).
mdadm mdadm.service MD Administration (Linux Software RAID).
mpd mpd.service Music Player Daemon.
mysqld mysqld.service MySQL database server.
netfs unused, handled automatically, see

remote-fs.service to manually execute scripts

Mounts network file systems.
net-auto-wired net-auto-wired.service Netcfg replacement for network - connects to wired network
net-auto-wireless net-auto-wireless.service Netcfg replacement for network - connects to wireless network
net-profiles netcfg.service Netcfg replacement for network - connects to profiles
network (dynamic Ethernet) dhcpcd@.service To bring up the network connections.
networkmanager NetworkManager.service


Replaces network, and provides configuration and detection for automatic network connections.
nginx nginx.service Nginx HTTP Server and IMAP/POP3 proxy server (Web Server)
nscd nscd.service Name service cache daemon
ntpd ntpd.service Network Time Protocol daemon (client and server).
openntpd openntpd.service alternate Network Time Protocol daemon (client and server).
php-fpm FastCGI Process Manager for PHP
postgresql postgresql.service PostgreSQL database server.
powernowd not yet implemented To adjust speed of CPU depending on system load. See also CPU Frequency Scaling
ppp not yet implemented A daemon which implements the Point-to-Point Protocol for dial-up networking.
preload preload.service Makes applications run faster by prefetching binaries and shared objects.
pure-ftpd not yet implemented FTP server.
readahead systemd-readahead-collect.service




Readahead for faster boot
rfkill rfkill.service (Un)block radio devices. (.service does not seem to provide equivalent functionality.)
rsyncd rsyncd.service Rsync daemon.
rsyslogd rsyslog.service The latest version of a system logger.
samba smbd.service



File and print services for Microsoft Windows clients.
saned saned@.service To share the scanner system over network.
sensord sensord.service Sensor information logging daemon (part of lm_sensors)
sensors lm_sensors.service Hardware (temperature, fans etc) monitoring.
slim slim.service Simple Login Manager
smartd smartd.service Self-Monitoring, Analysis, and Reporting Technology (S.M.A.R.T) Hard Disk Monitoring
snmpd not yet implemented A suite of applications used to implement SNMP
soundmodem not yet implemented Multiplatform Soundcard Packet Radio Modem
sshd sshd.service



OpenSSH (secure shell) daemon.
stbd deprecated This daemon was previously necessary for gnome-system-tools. However, as of gnome-tools 2.28, it is no longer needed.
svnserve svnserve.service Subversion server
syslogd deprecated This was the older and basic system logger.
syslog-ng syslog-ng.service System logger next generation.
timidity++ not yet implemented Software synthesizer for MIDI.
vboxservice vboxservice.service VirtualBox Guest Service
vsftpd vsftpd.service



FTP server.
wicd wicd.service Combine with dbus to replace network, a lightweight alternative to NetworkManager.
x11vnc not yet implemented VNC remote desktop daemon

See also