8.11 Handling Processes

As you have seen in Section 8.7, Editing Texts, programs can be started from the shell. Applications with a graphical user interface need the X Window System and can only be started from a terminal window within a graphical user interface. To open a file named vacation.pdf in your home directory from a terminal window in KDE or GNOME, simply run xpdf ~/vacation.pdf to start a PDF viewer displaying your file.

When looking at the terminal window again you will realize that the command line is blocked as long as the PDF viewer is open, meaning that your prompt is not available. To change this, press Ctrl+Z to suspend the process and enter bg to send the process to the background. Now you can still have a look at vacation.pdf while your prompt is available for further commands. An easier way to achieve this is by sending a process to the background directly when starting it. To do so, add an ampersand at the end of the command:

xpdf ~/vacation.pdf &

If you have started several background processes (also named jobs) from the same shell, the jobs command gives you an overview of the jobs (including the job number and their status):

tux@linux:~> jobs
[1]   Running        kpdf opensuse111_startup-xep.pdf &
[2]-  Running        kpdf opensuse111_reference-xep.pdf &
[3]+  Stopped        man jobs

To bring a job to the foreground again, enter fg job number.

Whereas job only shows the background processes started from a specific shell, the ps command (run without options) shows a list of all your processes—those you started. Find an example output below:

tux@linux:~> ps
PID TTY          TIME CMD
15500 pts/1    00:00:00 bash
28214 pts/1    00:00:00 xpdf
30187 pts/1    00:00:00 kate
30280 pts/1    00:00:00 ps

In case a program cannot be terminated in the normal way, use the kill command to stop the process (or processes) belonging to that program. To do so, specify the process ID (PID) shown by the output of ps. For example, to shut down the Kate editor in the example above, enter

kill 30187

This sends a TERM signal that instructs the program to shut itself down.

Alternatively, if the program or process you want to terminate is a background job and is shown by the jobs command, you can also use the kill command in combination with the job number to terminate this process:

kill % job number

If kill does not help—as is sometimes the case for runaway programs—try

kill -9 PID

This sends a KILL signal instead of a TERM signal, bringing the specified process to an end in most cases.

This section only aimed to introduce the most basic set of commands for handling jobs and processes. Find an overview for system administrators in Section 11.6, Processes, (↑ Reference ).