From the system's point of view, applications run in one or many processes, consuming system resources, such as memory and processor time. We present some commands to monitor and manage those processes, and as a consequence, the applications they belong to.
The ps command displays a list of processes currently running on the system, according to the criteria you set.
Running ps without arguments will show only processes initiated by you and attached to the terminal you are using:
$ ps PID TTY TIME CMD 18614 pts/3 00:00:00 bash 20173 pts/3 00:00:00 ps
Processes are controlled by means of signals. The kill and killall commands are used to send signals to processes. The kill command requires a process number as an argument, while killall requires a process name.
![]() |
Note |
---|---|
Please bear in mind that processes react differently to the same signals. You cannot expect a priori that the process behaves as you thought it would when you send it a signal. |
kill <process_number>
killall <process_name>
Signals can be specified by number or name. Execute kill -l to view a list of available signals. The most commonly used signals are:
TERM
or
15
: this is the default signal sent if
the signal name or number is omitted. It terminates the
process gracefully.
STOP
or
19
: this signal is used to temporarily
pause a process. Send signal
CONT
or
18
to continue a paused process.
KILL
or
9
: this signal is used to force
process termination. It is commonly used to end a process
that is not responding anymore (or
“frozen”). It terminates the process
abruptly.
kill 785: asks the process identified
by the number
785
to finish execution giving the
process the chance to perform any clean-up operation it
needs;
kill -KILL 785: forces termination of
the process identified by the number
785
without giving the process the
chance to perform any clean-up operation. The process
ends immediately;
killall -TERM make: asks all processes
named
make
launched by this user to finish
execution.
Whatever
happens, you will only control
your own processes (unless you are
root
) so you do not need to worry about
other users' processes
since
they will not be affected.
top is a program which simultaneously fulfills the functions of ps and kill, and is also used to monitor processes in real-time giving information about CPU and memory usage, running time, etc., as shown in Figure 19.1, “Monitoring Processes with top”.
The top utility is entirely keyboard controlled. Commands are case-sensitive. You can access help by pressing h. Its most useful commands are the following:
k: sends a signal to a process. You are
asked for the process'
PID followed by the number or the
name of the signal to be sent (
TERM
or
15
, by default);
M: sorts display of processes by the
amount of memory they take up (field
%MEM
);
P: sorts display of processes by the
CPU time they take up (field
%CPU
): this is the default sorting
method;
u: displays a given user's processes. You are asked to enter the user's name, not his UID. If you do not enter any name, all processes are displayed;
i: by default, all processes, even
sleeping ones, are displayed. This command ensures that
only processes currently running are displayed (processes
whose
STAT
field shows
R
,
Running) and not the
others. Using this command again takes you back to
showing all processes.