start page | rating of books | rating of authors | reviews | copyrights

Book HomeLearning UnixSearch this book

7.3. Cancelling a Process

You may decide that you shouldn't have put a process in the background. Or you decide that the process is taking too long to execute. You can cancel a background process if you know its process ID.

7.3.1. kill

The kill command aborts a process. The command's format is:

kill PID(s)

kill terminates the designated process IDs (shown under the PID heading in the ps listing). If you do not know the process ID, do a ps first to display the status of your processes.

In the following example, the "sleep n" command simply causes a process to "go to sleep" for n number of seconds. We enter two commands, sleep and who, on the same line, as a background process.

$ (sleep 60; who)&
[1] 21087
$ ps
 PID    TTY   TIME  COMMAND
20055    4    0:10  sh
21087    4    0:01  sh
21088    4    0:00  sleep
21089    4    0:02  ps
$ kill 21088
[1]+  Terminated              sleep 60
$ tom     tty2   Aug 30  11:27
grace   tty4   Aug 30  12:24
tim     tty5   Aug 30  07:52
dale    tty7   Aug 30  14:34

We decided that 60 seconds was too long to wait for the output of who. The ps listing showed that sleep had the process ID number 21088, so we used this PID to kill the sleep process. You should see a message like "terminated" or "killed"; if you don't, use another ps command to be sure the process has been killed.

The who program is executed immediately, since it is no longer waiting on sleep; it lists the users logged into the system.

7.3.2. Problem checklist

The process didn't die when I told it to.
Some processes can be hard to kill. If a normal kill of these processes is not working, enter "kill -9 PID". This is a sure kill and can destroy almost anything, including the shell that is interpreting it.

In addition, if you've run an interpreted program (such as a shell script), you may not be able to kill all dependent processes by killing the interpreter process that got it all started; you may need to kill them individually. However, killing a process that is feeding data into a pipe generally kills any processes receiving that data.



Library Navigation Links

Copyright © 2003 O'Reilly & Associates. All rights reserved.