4.3.5.7. Interrupting your processes
As a non-privileged user, you can only influence your own
processes. We already saw how you can display processes and filter
out processes that belong to a particular user, and what possible
restrictions can occur. When you see that one of your processes is
eating too much of the system's resources, there are two things
that you can do:
-
Make the process use less resources without interrupting it;
-
Stop the process altogether.
In the case that you want the process to continue to run, but
you also want to give the other processes on the system a chance,
you can renice the process. Appart from
using the nice or renice commands, top is an
easy way of spotting the troublesome process(es) and reducing
priority.
Identify the process in the "NI"
column, it will most likely have a negative priority. Type
r and enter the process ID of the process
that you want to renice. Then enter the nice value, for instance
"20". That means that from now on, this
process will take 1/5 of the CPU cycles at the most.
Examples of processes that you want to keep on running are
emulators, virtual machines, compilers and so on.
If you want to stop a process because it hangs or is going
totally berserk in the way of I/O consumption, file creation or use
of other system resources, use the kill
command. If you have the opportunity, first try to kill the process
softly, sending it the SIGTERM signal. This is an
instruction to terminate whatever it is doing, according to
procedures as described in the code of the program:
joe:~> ps -ef | grep mozilla
joe 25822 1 0 Mar11 ? 00:34:04 /usr/lib/mozilla-1.4.1/mozilla-
joe:~> kill -15 25822
|
In the example above, user joe stopped his Mozilla
browser because it hung.
Some processes are a little bit harder to get rid of. If you
have the time, you might want to send them the SIGINT signal to
interrupt them. If that does not do the trick either, use the
strongest signal, SIGKILL. In the example below, joe stops
a Mozilla that is frozen:
joe:~> ps -ef | grep mozilla
joe 25915 1 0 Mar11 ? 00:15:06 /usr/lib/mozilla-1.4.1/mozilla-
joe:~> kill -9 25915
joe:~> ps -ef | grep 25915
joe 2634 32273 0 18:09 pts/4 00:00:00 grep 25915
|
In such cases, you might want to check that the process is
really dead, using the grep filter again on
the PID. If this only returns the grep
process, you can be sure that you succeeded in stopping the
process.
Among processes that are hard to kill is your shell. And that is
a good thing: if they would be easy to kill, you woud loose your
shell every time you type Ctrl-C on the command line accidentally, since this is
equivalent to sending a SIGINT.
|
UNIX without pipes is almost
unthinkable |
|
The usage of pipes (|) for using output of one command as input
of another is explained in the next chapter,
Chapter 5.
|
In a graphical environment, the xkill
program is very easy to use. Just type the name of the command,
followed by an Enter and select the window of
the application that you want to stop. It is rather dangerous
because it sends a SIGKILL by default, so only use it when an
application hangs.