Download as pdf or txt
Download as pdf or txt
You are on page 1of 5

Daemon (computing)

In multitasking computer operating


systems, a daemon (/ˈdiːmən/ or
/ˈdeɪmən/)[1] is a computer program that
runs as a background process, rather than
being under the direct control of an
interactive user. Traditionally, the process
names of a daemon end with the letter d,
for clarification that the process is in fact
a daemon, and for differentiation
between a daemon and a normal
computer program. For example, Components of some Linux desktop environments that are daemons
syslogd is a daemon that implements include D-Bus, NetworkManager (here called unetwork), PulseAudio
system logging facility, and sshd is a (usound), and Avahi.
daemon that serves incoming SSH
connections.

In a Unix environment, the parent process of a daemon is often, but not always, the init process. A daemon is
usually created either by a process forking a child process and then immediately exiting, thus causing init to
adopt the child process, or by the init process directly launching the daemon. In addition, a daemon launched
by forking and exiting typically must perform other operations, such as dissociating the process from any
controlling terminal (tty). Such procedures are often implemented in various convenience routines such as
daemon(3) in Unix.

Systems often start daemons at boot time that will respond to network requests, hardware activity, or other
programs by performing some task. Daemons such as cron may also perform defined tasks at scheduled times.

Contents
Terminology
Implementations
Unix-like systems
MS-DOS
Windows NT
Classic Mac OS and macOS
Etymology
See also
References
External links

Terminology
The term was coined by the programmers at MIT's Project MAC. They took the name from Maxwell's demon,
an imaginary being from a thought experiment that constantly works in the background, sorting molecules.[2]
Unix systems inherited this terminology. Maxwell's demon is consistent with Greek mythology's interpretation
of a daemon as a supernatural being working in the background, with no particular bias towards good or evil.
However, BSD and some of its derivatives have adopted a Christian demon as their mascot rather than a
Greek daemon.

The word daemon is an alternative spelling of demon,[3] and is pronounced /ˈdiːmən/ DEE-mən. In the
context of computer software, the original pronunciation /ˈdiːmən/ has drifted to /ˈdeɪmən/ DAY-mən for some
speakers.[1]

Alternative terms for daemon are service (used in Windows, from Windows NT onwards — and later also in
Linux), started task (IBM z/OS),[4] and ghost job (XDS UTS).

After the term was adopted for computer use, it was rationalized as a "backronym" for Disk And Execution
MONitor.[5]

Daemons that connect to a computer network are examples of network services.

Implementations

Unix-like systems

In a strictly technical sense, a Unix-like system process is a daemon when its parent process terminates and the
daemon is assigned the init process (process number 1) as its parent process and has no controlling terminal.
However, more generally, a daemon may be any background process, whether a child of the init process or
not.

On a Unix-like system, the common method for a process to become a daemon, when the process is started
from the command line or from a startup script such as an init script or a SystemStarter script, involves:

Optionally removing unnecessary variables from environment.


Executing as a background task by forking and exiting (in the parent "half" of the fork). This
allows daemon's parent (shell or startup process) to receive exit notification and continue its
normal execution.
Detaching from the invoking session, usually accomplished by a single operation, setsid():
Dissociating from the controlling tty.
Creating a new session and becoming the session leader of that session.
Becoming a process group leader.
If the daemon wants to ensure that it will not acquire a new controlling tty even by accident
(which happens when a session leader without a controlling tty opens a free tty), it may fork and
exit again. This means that it is no longer a session leader in the new session, and cannot
acquire a controlling tty.
Setting the root directory (/) as the current working directory so that the process does not keep
any directory in use that may be on a mounted file system (allowing it to be unmounted).
Changing the umask to 0 to allow open(), creat(), and other operating system calls to
provide their own permission masks and not to depend on the umask of the caller.
Redirecting file descriptors 0, 1 and 2 for the standard streams (stdin, stdout and stderr) to
/dev/null or a logfile, and closing all the other file descriptors inherited from the parent
process.
If the process is started by a super-server daemon, such as inetd, launchd, or systemd, the super-
server daemon will perform those functions for the process,[6][7][8] except for old-style daemons not converted
to run under systemd and specified as Type=forking[8] and "multi-threaded" datagram servers under
inetd.[6]

MS-DOS

In the Microsoft DOS environment, daemon-like programs were implemented as terminate and stay resident
(TSR) software.

Windows NT

On Microsoft Windows NT systems, programs called Windows services perform the functions of daemons.
They run as processes, usually do not interact with the monitor, keyboard, and mouse, and may be launched
by the operating system at boot time. In Windows 2000 and later versions, Windows services are configured
and manually started and stopped using the Control Panel, a dedicated control/configuration program, the
Service Controller component of the Service Control Manager (sc command), the net start and net
stop commands or the PowerShell scripting system.

However, any Windows application can perform the role of a daemon, not just a service, and some Windows
daemons have the option of running as a normal process.

Classic Mac OS and macOS

On the classic Mac OS, optional features and services were provided by files loaded at startup time that
patched the operating system; these were known as system extensions and control panels. Later versions of
classic Mac OS augmented these with fully fledged faceless background applications: regular applications that
ran in the background. To the user, these were still described as regular system extensions.

macOS, which is a Unix system, uses daemons. Note that macOS uses the term "services" to designate
software that performs functions selected from the Services menu, rather than using that term for daemons as
Windows does.

Etymology
According to Fernando J. Corbató, who worked on Project MAC in 1963, his team was the first to use the
term daemon, inspired by Maxwell's demon, an imaginary agent in physics and thermodynamics that helped to
sort molecules, stating, "We fancifully began to use the word daemon to describe background processes that
worked tirelessly to perform system chores".[9]

In the general sense, daemon is an older form of the word "demon", from the Greek δαίμων. In the Unix
System Administration Handbook Evi Nemeth states the following about daemons:[10]

Many people equate the word "daemon" with the word "demon", implying some kind of satanic
connection between UNIX and the underworld. This is an egregious misunderstanding.
"Daemon" is actually a much older form of "demon"; daemons have no particular bias towards
good or evil, but rather serve to help define a person's character or personality. The ancient
Greeks' concept of a "personal daemon" was similar to the modern concept of a "guardian
angel"—eudaemonia is the state of being helped or protected by a kindly spirit. As a rule, UNIX
systems seem to be infested with both daemons and demons.

A further characterization of the mythological symbolism is that a daemon is something that is not visible yet is
always present and working its will. In the Theages, attributed to Plato, Socrates describes his own personal
daemon to be something like the modern concept of a moral conscience: "The favour of the gods has given me
a marvelous gift, which has never left me since my childhood. It is a voice that, when it makes itself heard,
deters me from what I am about to do and never urges me on".

See also
Bounce message (also known as mailer daemon)
List of computer term etymologies
List of Unix daemons
Service wrapper
Software bot
Terminate and stay resident program
User space
Web service
Windows service

References
1. Eric S. Raymond. "daemon" (http://catb.org/~esr/jargon/html/D/daemon.html). The Jargon File.
Retrieved 2008-10-22.
2. Fernando J. Corbató (2002-01-23). "Take Our Word for It" (http://www.takeourword.com/TOW14
6/page4.html). Retrieved 2006-08-20.
3. "Merriam-Webster definition of daemon" (http://www.merriam-webster.com/dictionary/daemon).
Merriam-Webster Online. Retrieved 2009-08-05.
4. "IBM Knowledge Center - Glossary of z/OS terms and abbreviations" (http://publib.boulder.ibm.
com/infocenter/zos/basics/index.jsp?topic=/com.ibm.zglossary.doc/zglossary.html). IBM.
5. "Daemon Definition" (http://www.linfo.org/daemon.html). www.linfo.org.
6. inetd(8) (https://www.freebsd.org/cgi/man.cgi?query=inetd&sektion=
8) – FreeBSD System Manager's Manual
7. launchd.plist(5) (https://www.unix.com/man-page/mojave/5/launchd.pl
ist) – Darwin and macOS File Formats Manual
8. "systemd.service" (http://www.freedesktop.org/software/systemd/man/systemd.service.html).
freedesktop.org. Retrieved August 25, 2012.
9. "The Origin of the word Daemon" (http://ei.cs.vt.edu/~history/Daemon.html).
10. "The BSD Daemon" (http://www.freebsd.org/copyright/daemon.html). Freebsd.org. Retrieved
2008-11-15.

External links
Unix Daemon Server Programming (http://www.enderunix.org/docs/eng/daemon.php)
Linux Daemon Writing HOWTO (http://www.netzmafia.de/skripten/unix/linux-daemon-howto.ht
ml)
Retrieved from "https://en.wikipedia.org/w/index.php?title=Daemon_(computing)&oldid=1020927846"

This page was last edited on 1 May 2021, at 21:43 (UTC).

Text is available under the Creative Commons Attribution-ShareAlike License; additional terms may apply. By using this
site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia
Foundation, Inc., a non-profit organization.

You might also like