It is possible to monitor processes and to “ask” them to terminate, pause, continue, etc. To understand the examples we're going to examine, it is helpful to know a bit more about processes.
As with files, all processes that run on a GNU/Linux system are organized in the form of a tree. The root of this tree is init, a system-level process which is started at boot time. Each process is assigned a number by the system to uniquely identify it (its PID, Process ID), and also inherits the PID of its parent process (PPID, Parent Process ID). The PID and PPID of init is 1: init is its own father.
Every process in UNIX can react to signals sent to it. There are 64 different signals which are identified either by their number (starting from 1) or by their symbolic names (SIGx, where x is the signal's name). The 32 “higher” signals (33 to 64) are real-time signals and are out of the scope of this chapter. For each of these signals, the process can define its own behavior, except for two signals: signal number 9 (KILL) and number 19 (STOP).
Signal 9 terminates a process irrevocably without giving it the time to terminate properly. This is the signal you send to a process which is stuck or exhibits other problems. A full list of signals is available using the kill -l command.