What is a Daemon?

In short, a Daemon is a background process.

Daemons can just be normal programs that run in the background, however most are created by starting a process, forking it and exiting the parent.

To fork a process means to create an exact copy of it. The parent of that process, if the real parent terminates right away, is now the init process at /sbin/init, which is the first thing started on every Unix-like operating system. Now, the process is termed a Daemon, it has no TTY associated with it.

Here's an example of a Daemon in Python:

import sys, os, time

pid = os.fork()

# there now exist two processes
if pid > 0: # If this is the parent,
    sys.exit(0) # quit.

# this is the background part:
time.sleep(5)
print "Hello, World!"

It's not yet one, strictly speaking. You'd also have to change the current working directory, redicted standard input and output to log-files and so on. You can read up on the gory details in this wikipedia article.

If you run the example, you'll notice, after two seconds it prints, even though the process you started on the command-line has terminated. The copy of this process is run 'by' init now.


In multitasking computer operating systems, a daemon 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 the daemon that implements the system logging facility, and sshd is a daemon that serves incoming SSH connections.

As you can see the Daemon's layer