Kill Process in Linux or Terminate a Process in UNIX / Linux Systems

I am a new Linux system user. How do I kill a process on Linux based server using command line options? How can I kill running process on Unix?

Linux and Unix-like operating system come with the kill command to terminate stalled or unwanted processes without having to log out or restart the server. Hence, it is important to the stability of Linux systems. The kill command sends the designated signal such as KILL process to the specified process or process groups. If no signal is specified, the TERM signal is sent. Please note that kill command can be internal as part of modern shells built-in function or externally located at /bin/kill. Usage and syntax remain similar regardless internal or external kill command.

A list of common Linux or Unix TERM signals

Linux and Unix-like operating system support the standard terminate signals listed below:

  1. SIGHUP (1) – Hangup detected on controlling terminal or death of controlling process. Use SIGHUP to reload configuration files and open/close log files.
  2. SIGKILL (9) – Kill signal. Use SIGKILL as a last resort to kill process. It will not save data or cleaning kill the process.
  3. SIGTERM (15) – Termination signal. It is the default and safest way to kill process.

The kill and killall command support more than 60 signals. However, most users only need to use signal 9 or 15. To get a full list of signals, type:
kill -l

What is a PID?

A Linux or Unix process is running instance of a program. For example, Firefox is a running process if you are browsing the Internet. Each time you start Firefox browser, the system is automatically assigned a unique process identification number (PID). A PID is automatically assigned to each process when it is created on the system. To find out PID of firefox or httpd process use the following pidof command:

pidof httpd
pidof apache2
pidof firefox

OR use the combination of ps command and grep command/egrep command:

ps aux | grep httpd
ps aux | grep apache2
ps aux | grep  firefox
Fig.01: Find the process ID (PID) of a running firefox program and apache2 server.

pgrep command

You can use pgrep command to find process ID (PID) too:
pgrep process
pgrep firefox
pgrep vim

How to kill process in Linux from the command line

The syntax is:

kill -[signal] PID
kill -15 PID
kill -9 PID
kill -SIGTERM PID
kill [options] -SIGTERM PID

What Linux or Unix permissions do I need to kill a process?

Rules are simple:

  1. You can kill all your own process.
  2. Only root user can kill system level process.
  3. Only root user can kill process started by other users.

kill command examples to kill a process on Linux

In this example, I am going to kill lighttpd server process.

Step 1 – Find out the PID (process id) of the lighttpd

Use the ps or pidof command to find out PID for any program. For example, if process name is lighttpd, you can use any one of the following command to obtain process ID:
pidof lighttpd
Sample outputs:

3486

OR
ps aux | grep lighttpd
Sample outputs:

lighttpd  3486  0.0  0.1   4248  1432 ?        S    Jul31   0:00 /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
lighttpd  3492  0.0  0.5  13752  3936 ?        Ss   Jul31   0:00 /usr/bin/php5-cg

Step 2 – kill the process using a PID

The PID # 3486 is assigned to the lighttpd process. To kill the lighttpd server, you need to pass a PID as follows:
# kill 3486
OR
$ sudo kill 3486
This will terminate a process with a PID of 3486.

How do I verify that the process is gone/killed?

Again use the ps command or pid command or pgrep command as follows:
$ ps aux | grep lighttpd
$ pidof lighttpd
$ pgrep lighttpd

A note about sending stronger signal # 9 (SIGKILL)

If no signal specified in the kill command, signal # 15 (SIGTERM), is sent by default. So the kill 3486 command is same as the following command:
# kill -15 3486
# kill -SIGTERM 3486

OR
$ sudo kill -15 3486
$ sudo kill -SIGTERM 3486

Sometime signal # 15 is not sufficient. For example, lighttpd may not be killed by signal #15 due to open sockets. In that case process (PID) # 3486 would be killed with the powerful signal # 9:
# kill -9 3486
# kill -SIGKILL 3486

OR
$ sudo kill -9 3486
$ sudo kill -SIGKILL 3486

Where,

  • -9 or -SIGKILL – A special kill signal that nearly guarantee to kill the process with the iron fist.

How do I kill two or more Linux PIDs?

The syntax is as follows to kill two or more PIDs as required can be used in a single command:

kill  pid1 pid2 pid3
kill -15  pid1 pid2 pid3
kill -9  pid1 pid2 pid3
kill  -9 3546 5557 4242

Say hello to killall command

The killall is a Linux only command. It may be available on FreeBSD and other Unix like systems such as macOS to kill processes by name. So no need to find the PIDs using the ‘pidof process’ or ‘ps aux | grep process’ commands. Do not use the killall command on Solaris Unix operating systems. The syntax is:

killall {Process-Name-Here}
killall -9 {Process-Name-Here}
killall -15 {Process-Name-Here}

To kill the lighttpd server, enter:
# killall -15 lighttpd
OR
# killall -9 lighttpd
To kill the Firefox web-browser process, enter:
# killall -9 firefox-bin
As I said earlier, the killall command on UNIX-like system does something else. It kills all process and not just specific process. Do not use killall on UNIX system. See your local man page for more info by typing the man command:
man killall

Posted by: SXI ADMIN

The author is the creator of SXI LLC and a seasoned sysadmin, DevOps engineer, and a trainer for the Linux operating system/Unix shell scripting. Get the latest tutorials on SysAdmin, Linux/Unix and open source topics via RSS/XML feed or weekly email newsletter.