We’re including this section because you should start to be interested in what’s running on your system behind your back.
Many modern computer activities are too complex for the system simply to look at a file or some other static resource. Sometimes these activities need to interact with another running process.
For instance, take FTP, which you may have used to download some Linux-related documents or software. When you FTP to another system, another program has to be running on that system to accept your connection and interpret your commands. So there’s a program running on that system called ftpd. The d in the name stands for daemon, which is a quaint Unix term for a server that runs in the background all the time. Most daemons handle network activities.
You’ve probably heard of the buzzword client/server enough to make you sick, but here it is in action — it has been in action for decades on Unix.
Daemons start up when the system is booted. To see how they get
started, look in the /etc/inittab
and
/etc/inetd.conf
files, as well as
distribution-specific configuration files. We won’t
go into their formats here. But each line in these files lists a
program that runs when the system starts. You can find the
distribution-specific files either by checking the documentation that
came with your system or by looking for pathnames that occur
frequently in /etc/inittab
. Those normally
indicate the directory tree where your distribution stores its system
startup files.
To give an example of how your system uses
/etc/inittab
, look at one or more lines with the
string getty
or agetty
. This is
the program that listens at a terminal (tty) waiting for a user to
log in. It’s the program that displays the
login
: prompt we talked about at the beginning of
this chapter.
The /etc/inetd.conf
file represents a more
complicated way of running programs — another level of
indirection. The idea behind /etc/inetd.conf
is
that it would waste a lot of system resources if a dozen or more
daemons were spinning idly, waiting for a request to come over the
network. So, instead, the system starts up a single daemon named
inetd. This daemon listens for connections from
clients on other machines, and when an incoming connection is made,
it starts up the appropriate daemon to handle it. For example, when
an incoming FTP connection is made,
inetd starts up the FTP daemon
(ftpd) to manage the connection. In this way, the
only network daemons running are those actually in use.
In the next section, we’ll show you how to see which daemons are running on your system. There’s a daemon for every service offered by the system to other systems on a network: fingerd to handle remote finger requests, rwhod to handle rwho requests, and so on. A few daemons also handle non-networking services, such as kerneld, which handles the automatic loading of modules into the kernel. (In Versions 2.4 and up, this is called kmod instead and is no longer a process, but rather a kernel thread.)