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.