How to Kill a Process in Linux from Command Line

In Linux, killing a process refers to terminating or stopping the execution of a running program. Each running process is assigned a unique identifier number known as the Process ID (PID), which helps the system to keep track of currently active processes.

In this article, we’ll find out about the Linux kill process and how to find and terminate a process using different tools and commands in Linux.

What Is the Linux Process

In simple terms, a process is like a program that’s currently running on a system, and each process has its own special ID (PID) number. However, sometimes a running program, or process, can misbehave or might stop responding or use up too much of the system resources.

When that happens, we need to stop or “kill” the process and this is where the kill command comes in handy.

What Is Kill Command

The “kill” command is a crucial utility that allows users to send signals (stop or terminate) to currently running processes, instructing them to gracefully exit or forcefully terminate.

The kill command is useful when you need to manage and control the activities of different programs on your Linux system such as:

  • To stop any automated process.
  • To stop a process that has been started by accident.
  • To stop a process that uses too much memory.
  • To forcefully terminate any running process in Linux.
  • To stop a process running in the background.

Using the kill command from /usr/bin provides you with some extra features to kill a process by process name using pkill, which identifies processes by their names.

How to Find Process ID or Process Name

Before terminating a running process, it’s essential to identify its Process ID (PID) or name using the following ps command that displays information about all running processes on the system with their PID (process ID) and other information.

$ ps -ef
List All Running Processes
List All Running Processes

If you want to find a specific process name PID, you can use a grep command that will list all processes running on the system and filter the results to show only those containing the term “mariadb“.

ps -ef | grep mariadb

Alternatively, you can directly find the PID of a process by name using the pgrep command as shown.

pgrep mariadb
Find Process PID
Find Process PID

How to Kill a Process in Linux

Before you kill, stop, or terminate a process, think about permissions. If you’re a root user, you can stop any process, but if you are a normal user, you need to add a “sudo” before the command or switch to a root with “su” to use the termination command.

The common syntax for the kill command is:

kill [signal or option] PID(s)
OR
sudo kill [signal or option] PID(s)

For a kill command a Signal Name could be:

Kill Command Signals
Kill Command Signals

Clearly from the behavior above:

  • SIGTERM is the default and safest way to kill a process.
  • SIGHUP is a less secure way of killing a process than SIGTERM.
  • SIGKILL is the most unsafe way among the above three, to kill a process that terminates a process without saving.

In Linux, there are different signals you can use to stop, end, or pause processes. You can list all available kill signals with their names and corresponding numbers using the following command, which will list

kill -l

While there are multiple available signals, but in most cases we only use SIGKILL (9) and SIGTERM (15).

List Kill Command Signals
List Kill Command Signals

To kill a process, we need to know the Process ID of a process. A Process is an instance of a program. Every time a program starts, automatically a unique PID is generated for that process.

Every Process in Linux has a pid. The first process that starts when the Linux System is booted is the – init process, hence it is assigned a value of ‘1‘ in most cases.

Init is the master process and can not be killed this way, which ensures that the master process doesn’t get killed accidentally. Init decides and allows itself to be killed, where kill is merely a request for a shutdown.

Before we step ahead and execute a kill command, some important points to be noted:

  • A user can kill all his processes.
  • A user can not kill another user’s process.
  • A user can not kill processes the System is using.
  • A root user can kill the system-level process and the process of any user.

To kill the mariadb process PID, use the kill command as shown.

kill -9 3383

The above command will kill the process having pid=3383, where PID is a Numerical Value of the process.

Another way to perform the same function can be rewritten as.

kill -SIGTERM 3383

Similarly ‘kill -9 PID‘ is similar to ‘kill -SIGKILL PID‘ and vice-versa.

To confirm that the process has terminated, you can again use the ps command.

ps -ef | grep mariadb
Kill Linux Process with PID
Kill Linux Process with PID

How to Kill Multiple Processes in Linux

To terminate multiple processes in Linux using their Process IDs (PIDs), you can use the kill command in combination with the relevant PID numbers.

First, identify the PIDs of the processes you want to terminate using the ps or pgrep command.

ps aux | grep apache2
OR
pgrep apache2

Once you have the PIDs, use the kill command to terminate them.

kill -9 PID1 PID2 PID3

How to Kill a Process in Linux Using Process Name

To terminate a process using the process name, we will use the pkill command, which is a version of the kill command that allows you to mention the process name or a pattern to locate a process.

You must be aware of the process name, before killing, and entering a wrong process name may screw you.

pkill mysqld

What if a process has too many instances and several child processes, we have a command ‘killall‘ that takes the process name as an argument in place of the process number.

How to Kill a Process in Linux Using the Killall Command

The main distinction between killall and kill is that killall can end a process by its name, whereas the kill command relies on the process ID (pid).

To kill all mysql instances along with child processes, use the command as follows.

killall mysqld
OR
pkill mysqld

You can always verify the status of the process if it is running or not, using any of the below commands.

systemctl status mysql
pgrep mysql
ps -aux | grep mysql

Linux graphical systems monitor tools like htop or gnome-system-monitor provide a user-friendly interface to find and kill processes.

Conclusion

That’s it for now from me. I’ll be back soon with another interesting and informative topic. Until then, stay tuned and connected to Tecmint, and take care of your health. Don’t forget to share your valuable feedback in the comments section.

Hey TecMint readers,

Exciting news! Every month, our top blog commenters will have the chance to win fantastic rewards, like free Linux eBooks such as RHCE, RHCSA, LFCS, Learn Linux, and Awk, each worth $20!

Learn more about the contest and stand a chance to win by sharing your thoughts below!

Ravi Saive
I am an experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

40 Comments

Leave a Reply
  1. Kill isn’t for kill processes. Kill is for send signals to other processes.
    And no, there is no relationship between uptime and the kill/pkill/etc commands. Most software has a standard start/stop procedure, some of them use kill, but others not.

    Reply
  2. Hey @oke deh, the output of your ‘ps‘ command is showing the ‘grep‘ command, not a process called ‘vnc‘.

    By the time you run the kill command, the grep has completed and so the process id no longer exists, so you can’t kill it.

    Everything you have shown above is working exactly as it is supposed to work, assuming there is no process running on the machine called ‘vnc*‘.

    You should try with just ‘vnc‘, as your grep command is the thing wrong here, not the kill command…

    Reply
  3. Hello tecmint,

    I try to kill this process but its not working…

    "[root@rms ~]# ps -afe|grep vnc*
    root     19784 19688  0 00:02 pts/0    00:00:00 grep vnc*"
    

    I tried following command..

    # kill -9 19784
    

    return this output

    "-bash: kill: (19784) - No such process"
    

    what is the correct command?

    Reply
  4. In order to `kill skypeforlinux` I have used `killall skypeforlinux` two times (because of a wingpanel I believe), but now actually I use this pidof skypeforlinux | xargs kill -9 and it kills my skypeforlinux in one go :) . A good article.

    Reply
  5. I am using kill -9 $pid command to kill my server. However, sometimes if I restart the server, I get an exception as an address already in use that is the port is still in use (port number 6001) even after stopping the server using the above mentioned command.

    Is there any other safe command to use to kill my server so that the port is also freed along with killing of the process

    Reply
    • You can find PID-s of all processes on a port with command *lsof -i :6001*, where 6001 is a number of your port. Then you can kill all processes on that port with *kill* command.

      Reply
  6. Just to say thank you very much Avishek however I would like to know how the root can kill a specific process for an user, please can you give me with a scenario. Thanks again.

    Reply
    • @Martial,
      First find the all the processes and Process IDs of particular users by running following command.

      # ps -aux | grep {user}
      

      And then kill the specific process by their process ID’s

      Reply
  7. Something is messed up. I’ve installed Varnish 3.0 via apt-get install running Raspbian on my Pi 2. For some reason, my “service” commands don’t work. ” sudo service varnish start” yields “varnish: unrecognized service”. Please advise how I can straighten this out. Thanks very much.

    Reply
  8. how to avoid to kill any process. I mean suppose I do not want anybody to kill mysql service using kill command so how can I do this?

    Awaiting your reply,

    Rjas

    Reply
  9. I have problems with chrome slowing down my system, so I’m used to kill all stances of chrome with this command:

    $ while [pidof chrome]; do killall chrome; done

    Reply
    • Dear sriram,
      i Didn’t get you question.
      When you close a terminal. All the running processes gets killed except those running in background and you can kill those by finding their pid.

      Reply
  10. hi…can u tell me the procedure to replace graphic card in red hat linux enterprise 6.0?…my pc was shipped with nvidia 610GT(zotac made GT610) but i need to replace it with nvidia 210GT(asus made En210). the second card is downgraded than the first one.Also can u inform me whether I need to do free OS install or not for this? ur kindness is appreciated on this!!!

    Reply
    • I fear it would be built on the board and perhaps u cant swap it. Ask your Vendor for such detailed hardware information.

      Reply
    • @ Linux Fresher, I didn’t get you properly, although as far as i could understand, you said words for Appraisals for us. Thanks

      Reply
  11. Also xkill is the easiest way to kill a process using just your mouse.

    Just type ‘xkill’ in the terminal and then it would change the cursor to a cross, then just click on the process you want to kill and you are done. It is as easy as that.

    Please add this also. This is very useful in some really frustrating situations like stuck in the middle of a game, then just do Alt+Ctrl+T to bring up the terminal and kill the game using xkill.

    It has helped me quite a lot of times, it might help you also.

    Reply
  12. DO NOT use kill to stop services as a first resort. This will mess up your system if you do it regularly. Use the init scripts already set up for that purpose, or whichever program is provided for control of the service.

    Normally, for example to stop rsyncd, you should use “/etc/init.d/rsync stop”. You can use the same script to start, restart, or get status of the service. Read the script to learn more about what it does.

    If you have Upstart installed, then the “service” command works similarly (but arguably better). The syntax is “service rsync restart” to restart rsyncd, for example. Currently Upstart does not support all services in Debian-based distros, so you might need to use the previous method.

    Many services come with their own maintenance programs separate from the init.d scripts. For example, apache2 httpd comes with apachectl.

    Finally, while the “kill” command is mostly used to stop processes, it can send *any* signal. Check out the manpage for more information. kill is much more useful than explained here- but also more dangerous.

    Reply
    • Killall on Solaris will kill all processes on the system making it unusable.
      so it’s not a good habit to use killall. So use it with extreme care first check then use :-)

      Reply
  13. i usually see interesting topics of linux in this site.i realy like this site ,because it gets me femiliar with linux and i have leant alot upto know.

    thanks

    Reply

Got Something to Say? Join the Discussion...

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.