fbpx
Wikipedia

Daemon (computing)

In multitasking computer operating systems, a daemon (/ˈdmən/ or /ˈdmə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, syslogd is a daemon that implements system logging facility, and sshd is a daemon that serves incoming SSH connections.

Components of some Linux desktop environments that are daemons include D-Bus, NetworkManager (here called unetwork), PulseAudio (usound), and Avahi.

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.

Terminology edit

The term was coined by the programmers at MIT's Project MAC. 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".[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.

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:[3]

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".[citation needed]

In modern usage in the context of computer software, the word daemon is pronounced /ˈdmən/ DEE-mən or /ˈdmən/ DAY-mən.[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). Sometimes the more general term server or server process is used, particularly for daemons that operate as part of client-server systems.[5]

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

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

Implementations edit

Unix-like systems edit

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,[7][8][9] except for old-style daemons not converted to run under systemd and specified as Type=forking[9] and "multi-threaded" datagram servers under inetd.[7]

MS-DOS edit

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

Windows NT edit

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 edit

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 but 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.

See also edit

References edit

  1. ^ a b c Eric S. Raymond. "daemon". The Jargon File. Retrieved 2008-10-22.
  2. ^ "The Origin of the word Daemon".
  3. ^ "The BSD Daemon". Freebsd.org. Retrieved 2008-11-15.
  4. ^ "Glossary of z/OS terms and abbreviations". IBM Documentation. IBM. 31 January 2006.
  5. ^ "sshd: OpenSSH server process | SSH Academy". www.ssh.com. Retrieved 2023-12-04.
  6. ^ "Daemon Definition". www.linfo.org.
  7. ^ a b inetd(8) – FreeBSD System Manager's Manual
  8. ^ launchd.plist(5) – Darwin and macOS File Formats Manual
  9. ^ a b "systemd.service". freedesktop.org. Retrieved August 25, 2012.

External links edit

daemon, computing, spirit, classical, greek, mythology, daimon, broader, coverage, topic, server, computing, this, article, includes, list, general, references, lacks, sufficient, corresponding, inline, citations, please, help, improve, this, article, introduc. For spirit in Classical Greek mythology see Daimon For broader coverage of the topic see Server computing This article includes a list of general references but it lacks sufficient corresponding inline citations Please help to improve this article by introducing more precise citations June 2018 Learn how and when to remove this template message In multitasking computer operating systems a daemon ˈ d iː m en or ˈ d eɪ m en 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 syslogd is a daemon that implements system logging facility and sshd is a daemon that serves incoming SSH connections Components of some Linux desktop environments that are daemons include D Bus NetworkManager here called unetwork PulseAudio usound and Avahi 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 1 Terminology 2 Implementations 2 1 Unix like systems 2 2 MS DOS 2 3 Windows NT 2 4 Classic Mac OS and macOS 3 See also 4 References 5 External linksTerminology editThe term was coined by the programmers at MIT s Project MAC According to Fernando J Corbato 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 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 In the general sense daemon is an older form of the word demon from the Greek daimwn In the Unix System Administration Handbook Evi Nemeth states the following about daemons 3 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 citation needed In modern usage in the context of computer software the word daemon is pronounced ˈ d iː m en DEE men or ˈ d eɪ m en DAY men 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 Sometimes the more general term server or server process is used particularly for daemons that operate as part of client server systems 5 After the term was adopted for computer use it was rationalized as a backronym for Disk And Execution MONitor 6 1 Daemons that connect to a computer network are examples of network services Implementations editUnix like systems edit 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 7 8 9 except for old style daemons not converted to run under systemd and specified as Type forking 9 and multi threaded datagram servers under inetd 7 MS DOS edit In the Microsoft DOS environment daemon like programs were implemented as terminate and stay resident programs TSR Windows NT edit 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 edit 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 but 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 See also editList of computer term etymologies List of Unix daemons Service wrapper Software bot User space Web service Windows serviceReferences edit a b c Eric S Raymond daemon The Jargon File Retrieved 2008 10 22 The Origin of the word Daemon The BSD Daemon Freebsd org Retrieved 2008 11 15 Glossary of z OS terms and abbreviations IBM Documentation IBM 31 January 2006 sshd OpenSSH server process SSH Academy www ssh com Retrieved 2023 12 04 Daemon Definition www linfo org a b inetd 8 FreeBSD System Manager s Manual launchd plist 5 Darwin and macOS File Formats Manual a b systemd service freedesktop org Retrieved August 25 2012 External links editUnix Daemon Server Programming at the Wayback Machine archived 2019 10 30 Retrieved from https en wikipedia org w index php title Daemon computing amp oldid 1202623345 Implementations, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.