📅 2016-May-31 ⬩ ✍️ Ashwin Nanjappa ⬩ 🏷️ kill, killall, sigkill, signal, sigterm ⬩ 📚 Archive
Sooner or later you will find that an errant process is running amok or in the background and it needs to be stopped. This is called killing a process in Linux.
The most common command to kill a process is kill
.
$ kill 1234
By default, kill
sends the TERM
signal.
$ kill 1234 5678 9999
TERM
can be sent to processes. To list all the available signal numbers and their corresponding signal names:$ kill -L
$ kill -KILL 1234
SIG
as prefix:$ kill -SIGKILL 1234
$ kill -9 1234
TERM
is enough. Most processes receive this signal, clean up their work and exit. For errant processes which do not respond to TERM
, the final deathblow is sending a KILL
. On sending this signal, the kernel steps in and it directly murders the process giving it no chance to clean up.Looking up the PID of a process and then killing it is usually cumbersome. What you usually want to do is to kill based on the process name. This can be done using the killall
command.
$ killall vim
$ killall -r "*abcd*"
By default, killall
sends the TERM
signal. Other signals can be sent using signal number or signal name using the same command syntax as the kill
command shown above.
By default, killall
only prints out the processes that it could not kill. It might be better to also see output from the command when it succeeds. The verbose option can be used for this:
$ killall -v vim
Killed vim(28952) with signal 15
Killed vim(28347) with signal 15
$ kill -i vim
Kill vim(1067) ? (y/N)
Tried with: Ubuntu 14.04