Daemons
ro:Daemon
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
).
/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.
Contents
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
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.
Essentials
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
alsa-restore.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
freshclamd.service |
Antivirus. |
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
NetworkManager-wait-online.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
systemd-readahead-done.service systemd-readahead-drop.service systemd-readahead-replay.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
nmbd.service winbindd.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
sshd@.service sshdgenkeys.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
vsftpd@.service vsftpd-ssl.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
- Initscripts
- Systemd
- Examples for writing rc.d scripts
- Examples for writing Systemd/Services