Introduction
Before we start discussing about kill command in linux, let's first understand-What is a Kill Command ?
The kill
command in Linux is used to terminate or send signals to running processes. It allows users to forcefully stop processes by specifying their process IDs (PIDs) or by sending specific signals to control the behavior of a process.
Linux is a fantastic and sophisticated operating system, but it is not perfect. Some applications may behave abnormally from time to time, becoming unresponsive or demanding a large number of system resources. Because the original application process never entirely closes down, unresponsive programs cannot be restarted. Either restart the system or kill the program process are the only options.
There are a number of utilities available to help you terminate errant processes, with kill
being the most popular.
In this tutorial, we will discuss briefly about the kill
command.
Kill Command
Most Bourne-derived shells, such as Bash and Zsh, include a kill
shell. The shells and the standalone /bin/kill
executable have slightly different command behavior.
To see all locations on your system that include kill
, use the type
command.
type -a kill
Output
kill is a shell builtin
kill is /bin/kill
When you type kill
, the result above demonstrates that the shell builtin takes precedence over the standalone executable. Type the entire path to the file /bin/kill
if you want to utilize the binary. We'll use the Bash builtin in this tutorial.
The kill
command is written in the following format:
kill [OPTIONS] [PID]...
The kill
command transmits a signal to selected processes or process groups, instructing them to follow the signal's instructions. If you don't specify a signal, it defaults to -15
(-TERM).
The following are the most regularly used signals:
1
(HUP
) - Reload a process.9
(KILL
) Kill a process.15
(TERM
) - End a process gracefully.
Invoke the command with the -l
option to acquire a list of all possible signals:
kill -l
Signals can be defined in one of the three ways:
- Making use of numbers (e.g.,
-1
or-s 1
). - Using the prefix "SIG" (e.g.,
-SIGHUP
or-s SIGHUP
). - Without the prefix "SIG" (e.g.,
-HUP
or-s HUP
).
The commands listed below are interchangeable:
kill -1 PID_NUMBER
kill -SIGHUP PID_NUMBER
kill -HUP PID_NUMBER
One of the following PIDs can be sent to the kill
command:
- The signal is sent to the process with ID equal to the
PID
ifPID
is greater than zero. - The signal is given to all processes in the current process group if
PID
is equal to zero. To put it another way, the signal is broadcast to all processes with the same GID as the shell that issued thekill
command. To see the process group IDs, use theps -efj
command (GIDs). - If
PID
is set to-1
, the signal will be transmitted to all processes that have the same UID as the user who issued the command. The signal is issued to all processes except init and thekill
process itself if the invoking user is root. - If the
PID
is less than-1
, the signal is issued to all processes in the process group eq, with GID equal to the PID's absolute value.
Regular users can only send signals to their own processes, but not those that belong to other users. The root user, on the other hand, has the ability to transmit signals to other users' processes.
Terminating Processes Using the kill Command
To use the kill command to terminate or kill a process, you must first locate the process ID number (PID). You may do this with top
, ps
, pidof
, and pgrep
, among other commands.
Let's imagine your Firefox browser has become uncooperative and you need to terminate it. Use the pidof
command to find the browser PIDs:
pidof firefox
The IDs of all Firefox processes will be printed by this command:
Output
6263 6199 6142 6076
You can kill all of the processes by sending the TERM
signal once you know their numbers:
kill -9 6263 6199 6142 6076
You can combine the above commands into one instead of looking for PIDs and then killing the processes:
kill -9 $(pidof firefox)
Reloading Processes Using the kill
Command
Sending the HUP
signal, which instructs processes to refresh their settings, is another popular use case for kill
.
To reload Nginx, for example, you must send a signal to the master process. The nginx.pid
file, which is normally placed in the /var/run
directory, contains the process ID of the Nginx master process.
To find the master PID, use the cat
command:
cat /var/run/nginx.pid
Output
30251
Reload the Nginx settings once you've discovered the master PID by typing:
sudo kill -1 30251
Run the command above as root or as a user with sudo
capabilities.
FAQs of Kill Command in Linux
How do I use the kill
command to terminate a process?
To terminate a process using kill
, you need to specify its PID. For example, kill 1234
will attempt to terminate the process with PID 1234.
Can the kill
command terminate multiple processes simultaneously?
Yes, you can provide multiple PIDs to the kill
command, separated by spaces. For example, kill 1234 5678
will attempt to terminate both processes with PIDs 1234 and 5678.
What are signals in the context of the kill
command?
Signals are messages that can be sent to running processes to control their behavior. The kill
command can be used to send signals to processes, such as terminating them (SIGTERM
) or forcing them to reload their configuration (SIGHUP
).
How can I send a specific signal to a process using the kill
command?
By default, the kill
command sends the SIGTERM
signal (15) to a process. To specify a different signal, you can use the -s
option followed by the signal name or number. For example, kill -s SIGUSR1 1234
sends the SIGUSR1
signal to the process with PID 1234.
What happens if I send the SIGKILL
signal to a process using kill
?
The SIGKILL
signal (9) is a special signal that immediately terminates a process without allowing it to clean up or perform any final actions. It forcefully stops the process, and its resources are released.
Can I kill a process owned by a specific user using the kill
command?
Yes, if you have the appropriate permissions, you can use the kill
command with the -u
option followed by the username to terminate processes owned by a specific user. For example, kill -u username
will attempt to kill all processes owned by "username".
What is the difference between kill
and pkill
?
While the kill
command terminates processes based on their PIDs, the pkill
command allows you to terminate processes based on their names or other attributes. pkill
offers more flexibility in selectively killing processes based on certain criteria.
Conclusion
To deliver a signal to processes, use the kill
command. SIGKILL
or -9
is the most commonly used signal, which terminates the specified processes.
If you have any queries, please leave a comment below and we’ll be happy to respond to them.