How to Kill a Process in Linux

Linux is renowned for its stability, but individual applications still freeze, crash, or consume 100% of the CPU, bringing your server to a grinding halt. In a graphical desktop environment like Windows, you would open the Task Manager and click “End Task.” On a headless Linux server, you must achieve the same result using terminal commands. Knowing how to safely and forcefully terminate a rogue process is a fundamental skill for system administrators.

Understanding Process IDs (PIDs)

Before you can kill a program, you must know how Linux identifies it. When you launch an application—whether it is a web server like Apache, a database, or a simple text editor—the Linux kernel assigns it a unique number called a Process ID (PID). The kill command does not use the name of the program; it requires this specific numerical PID to execute the termination.

Step 1: Finding the PID

If a program is frozen, you must first locate its ID number.

  • Method A: The ‘top’ command (Visual Search)
    Type top and press Enter. This provides a live, updating list of the most resource-intensive processes on your system. The PID is always listed in the very first column on the far left. Press q to exit top once you note the number.
  • Method B: The ‘ps’ and ‘grep’ command (Targeted Search)
    If you know the name of the frozen program (e.g., “nginx”), you can search for it directly. Type:
    ps aux | grep nginx
    The output will list every running instance of Nginx. The PID is the first large number listed immediately after the username column.
  • Method C: The ‘pidof’ shortcut
    The fastest method, if you know the exact name of the executable, is to ask for the PID directly:
    pidof nginx
    This will output only the numerical PIDs associated with that program.

Step 2: Killing the Process Gracefully

Once you have the PID (e.g., 1452), you can attempt to terminate it. It is vital to understand that the kill command does not inherently destroy processes; it sends signals to them.

  1. The default signal sent by the command is SIGTERM (Signal 15). This politely asks the program to shut down, allowing it time to save files and close database connections safely.
  2. Type the command:
    kill 1452
  3. Press Enter. If you do not have ownership of the process (e.g., it is a system service running as root), you must prepend sudo (e.g., sudo kill 1452).

Step 3: Force Killing a Stubborn Process (SIGKILL)

If a process is completely locked up and unresponsive, it will ignore the polite SIGTERM request. You must escalate to a forceful termination.

  1. You do this by sending SIGKILL (Signal 9). This tells the Linux kernel to immediately destroy the process without giving the program any chance to clean up.
  2. Type the command:
    kill -9 1452
  3. Press Enter. The process will be instantly annihilated.

Warning: Only use kill -9 as a last resort. Force killing a database like MySQL while it is writing data can corrupt your entire database file.

The ‘killall’ Shortcut

If you have five different instances of a program running (e.g., five Chrome background processes) and you want to terminate all of them simultaneously without looking up five different PIDs, use the killall command.

  • Type: killall chrome

This command uses the name of the program rather than the PID and will send a termination signal to every instance matching that name.

By mastering the kill command and understanding signals, you can confidently regain control of an unresponsive Linux system.

Get the best tech tips delivered straight to your inbox.

Join thousands of readers mastering Apple, Google, Microsoft, and Linux.