Effectively managing processes is a valuable skill for any Ubuntu user. It would be useful to know the technical methods for kill process Ubuntu to handle frozen applications, optimize systems, or troubleshoot any issues. This tutorial walks you step-by-step through the methods and commands required to perform all sorts of terminations — from a polite "please exit" to a harsh-mannered "please exit now."
We will cover command-line and graphical tools, with explanations for all signals that can be sent to control processes, and quite interesting tips that should prevent you from crashing your system. This is especially great knowledge for developers and administrators whose actions on an Ubuntu VPS Hosting are mostly command-line oriented.
Quick Answer: Fastest Ways to Kill a Process
If you just need the command, here you go:
kill 12345
pkill firefox
killall gimp
sudo lsof -i :8080
kill -9 12345
That covers about 90% of real cases. The rest of this article is for when those don't work, or when you need to do it without breaking something.
Understanding Processes, PIDs, and Signals
Before terminating a process, it's helpful to understand what it is. A process is an active instance of a program. The system assigns each process a unique Process ID (PID) to manage it.
If you're new to the operating system itself, start with what is Ubuntu to understand the foundation. Processes can exist in several states, but the most common are:
- Running: The process is currently executing on the CPU.
- Sleeping: The process is waiting for a resource or an event. Most processes are in this state.
- Stopped: The process has been paused (e.g., by the SIGSTOP signal) and can be resumed.
- Zombie: The process has completed its execution but still has an entry in the process table.
Every running program on Ubuntu has a numeric Process ID (PID). You kill a process by sending it a signal, which is a small instruction the kernel delivers to the process. SIGTERM (15) politely asks it to clean up and exit. SIGKILL (9) is the nuclear option — the kernel terminates it immediately, no cleanup, no negotiation.
For developers and administrators working mostly in command-line environments, using an Ubuntu VPS Hosting can provide a reliable and scalable setup for managing processes efficiently.
How to Find a Process ID (PID) in Ubuntu
Before you kill anything, you need to know what you're killing. Don't skip this step — I've seen sysadmins nuke the wrong PID and take down a database with it.
Using ps aux | grep
The classic. Lists every process, then filters:
ps aux | grep firefox
Second column is the PID. Just ignore the line that shows the grep command itself.
Using pgrep
Cleaner output, just the PIDs:
pgrep firefox
pgrep -x nginx # exact match only
pgrep -a python # show the command line too
I reach for pgrep -x when I want to avoid catching firefox-bin, firefox-helper, etc.
Using pidof
Best for exact binary names:
pidof nginx
Using top and htop
For interactive snooping, htop wins. Install it with sudo apt install htop, then sort by CPU or memory and find your culprit visually. These tools are excellent for getting a complete overview of your system. For more ways to view running tasks, explore our resource on the Linux Process List.
Common Commands to Kill Processes
Using the kill Command (by PID)
The kill command is the most direct way to terminate a process when you know its PID. It works by sending a signal to the specified process.

- First, find the PID using
ps aux | grep <process_name>orpgrep <process_name>. - Then, use the kill command with the PID:
kill 12345 # sends SIGTERM (graceful)
kill -15 12345 # same thing, explicit
kill -9 12345 # SIGKILL — last resort
Here's the thing most tutorials skip: kill doesn't always terminate instantly. It sends a request. A well-behaved app will flush buffers, save state, and exit cleanly. Give it 3–5 seconds before escalating.
To learn more about the various signals and options, you can dive deeper into the Linux Kill Process with our detailed guide.
Using pkill and killall Commands (by Name)
These commands are extremely useful when you want to kill a process by name in Ubuntu instead of by PID.
- pkill: This command kills processes based on their name or other attributes. It's flexible because it can match partial names.
# Gracefully kill all processes with 'firefox' in their name
pkill firefox

- killall: This command is stricter than pkill. It kills all processes that exactly match the provided name.
# Forcefully kill all processes named exactly 'gimp'
killall -9 gimp

kill vs pkill vs killall — Comparison
| Command | Targets By | Partial Match | Best For | Risk |
kill |
PID | No | Precise, single process | Low |
pkill |
Name (regex) | Yes | Quick name-based kills | Medium |
killall |
Exact name | No | All instances of one binary | Medium |
systemctl stop |
Service unit | No | Services managed by systemd | Low |
How to Kill a Process by Port
If you've ever seen Error: listen EADDRINUSE :::3000, this section's for you.
Using lsof
sudo lsof -i :8080
Look at the PID column, then:
sudo kill -15 <PID>
Using ss
Faster than lsof on busy servers:
sudo ss -ltnp | grep :8080
Example: Kill the App on Port 3000
sudo lsof -i :3000
# COMMAND PID USER ...
# node 9821 alex ...
kill 9821
Stop a Service Instead of Killing Its Process
Try killing nginx on a server and watch it pop right back. That's systemd doing its job — it restarts services that crash. Killing the process is the wrong tool here.
sudo systemctl stop nginx
sudo systemctl status nginx
sudo systemctl disable nginx # prevent auto-start at boot
sudo systemctl mask nginx # block it entirely
Use restart if you just want a fresh start. Use mask only when you really want a service gone — it's a heavier switch than disable.
For more on running services on a managed box, our Linux VPS hosting guides walk through systemd basics in more depth.
Using Interactive Tools to Manage Processes
htop (Terminal)
htop is a modern, user-friendly tool with a colorized interface, easier navigation, and more intuitive controls than the classic top. If htop isn't installed, you can add it with sudo apt install htop.
To use htop to kill a process:
- Launch it by typing htop in the terminal.
- Use the arrow keys to scroll and highlight the unresponsive process.
- Press the k key to send a signal.
- Choose the signal from the left-hand menu (e.g., 15 SIGTERM or 9 SIGKILL) and press Enter.
Ubuntu System Monitor (GUI)
For users who prefer a graphical interface, Ubuntu provides the System Monitor.
- Open the "Show Applications" menu and search for "System Monitor".
- Navigate to the Processes tab.
- Find the process you want to terminate. You can click on column headers to sort by CPU, Memory, or Name.
- Right-click the process and select End (for a graceful SIGTERM) or Kill (for a forceful SIGKILL).
There's also xkill — run it, your cursor turns into an X, click any window and that app dies. Fun, occasionally dangerous.
Signals and Their Effects
When you use a kill command, you're sending a signal. Understanding the difference between the most common signals is key to managing processes effectively.
When you want to control a process, you send it a message called a signal. These signals tell the process what to do, from politely asking it to close to forcefully shutting it down without warning.
- SIGTERM (Signal 15): The Graceful Shutdown. This is the default and safest signal. It acts as a polite request, allowing the program to perform cleanup tasks like saving data and closing files before it exits.
- SIGKILL (Signal 9): The Forceful Termination. This is the ultimate last resort. It's a non-ignorable command that forces the process to terminate immediately, which can sometimes lead to data corruption, as there is no chance for cleanup.
- SIGSTOP (Signal 19): The Pause Button. This signal doesn't end a process but temporarily freezes it. The process remains loaded in memory and can be resumed exactly where it left off with a SIGCONT (continue) signal.
Always start with the gentle SIGTERM to allow for a clean exit and prevent data loss. You should only escalate to the forceful SIGKILL when a process is completely unresponsive.
Troubleshooting Common Problems
Even with the right commands, sometimes killing a process in Ubuntu doesn't go as planned. Errors like permission denied, processes that restart automatically, or tasks that stubbornly refuse to die are all common issues.
| Problem | Cause | Fix |
| Operation not permitted | Process owned by another user or root, so you lack privileges. | Use sudo kill -9 <PID> to run the command with administrative rights. |
| Process restarts automatically | The process is controlled by a service manager such as systemd. | Stop the service instead: sudo systemctl stop <service-name>. |
| Process won't die even with -9 | Stuck in D state (uninterruptible I/O). | Wait for I/O to complete; may need reboot if critical. |
| Zombie process | Parent hasn't reaped child process. | Kill or restart the parent process so it can reap the zombie. |
| No such process | PID already exited or wrong number. | Re-check with ps -p <PID> |
When NOT to Use kill -9
Skipping SIGTERM and jumping straight to SIGKILL can corrupt databases, leave stale lock files, and skip critical cleanup. Try kill first. Wait. Then escalate. -9 is the last resort, not the first move.
Verify the Process Was Killed
ps -p 12345 # should return nothing
pgrep -x firefox # silent = gone
sudo lsof -i :8080 # confirm port is free
If those commands return empty, you're done. If they don't — back to the troubleshooting table.
Automating Process Termination with Scripts
Advanced users often prefer automating repetitive system tasks instead of handling them manually each time. Process management can be scripted so that resource-hungry or frozen applications are automatically detected and terminated.
#!/bin/bash
PROCESS_NAME="my_app"
PID=$(pgrep $PROCESS_NAME)
if [ -n "$PID" ]; then
echo "Killing $PROCESS_NAME with PID $PID"
kill $PID
fi
You can also extend this script to restart the application after termination or run it periodically using cron jobs. A safer pattern uses pgrep -x for exact matching and graceful-then-force escalation. With these methods, your Ubuntu system can self-manage troublesome processes without constant manual intervention.
Kill Command Cheat Sheet
| Command | What It Does |
kill 12345 |
Send SIGTERM to PID 12345 |
kill -9 12345 |
Force-kill PID 12345 |
pkill name |
Kill by name (partial match) |
pkill -x name |
Kill by exact name |
killall name |
Kill all matching exact names |
sudo lsof -i :PORT |
Find process on a port |
sudo systemctl stop svc |
Stop a systemd service |
pstree -p |
Show process tree with PIDs |
pkill -P PARENT_PID |
Kill children of a parent |
Safety Tips and Best Practices
Terminating processes is powerful, but it must be done carefully to avoid damaging your system. A single wrong command can crash your desktop environment, cause data loss, or even force a hard reboot.
- Use SIGTERM first: Always start with a graceful termination before resorting to SIGKILL (-9).
- Double-check the PID: Verify with ps, pgrep, or htop to ensure you're targeting the correct process. Twice on production.
- Research unknown processes: If you don't recognize a process, look it up instead of killing it blindly.
- Avoid critical system tasks: Never kill systemd (PID 1), init, kthreadd, Xorg, or gnome-shell — you'll crash the box or lose your desktop session.
- If it's a service, stop the service: Don't fight systemd. Use systemctl stop instead.
Killing Processes Remotely Over SSH
On a headless server, you'll do all of this over SSH. Same commands apply. A few tips:
- Use
screenortmuxfor long-running tasks so they survive a disconnect - Use
nohup command &when you want a process detached from your shell - Check
jobsto list background processes in your current shell
If you're new to remote sessions, brush up on how to SSH into a Linux server before experimenting on production. For understanding the differences between server and desktop environments, see our comparison of Ubuntu Server vs Ubuntu Desktop.
Conclusions
Having sound knowledge of managing and terminating processes in Ubuntu is key to keeping the system stable, resolving program freezing, and boosting productivity. The core things to keep in mind include the signals behind termination, based on caution, and best practices when using the command line and tools such as kill, pkill, htop, or the graphical way through System Monitor.
The end goal is to have a couple of tricks for getting rid of frozen processes using automation scripts and other safety measures without endangering one's ongoing work or crashing the machine.
Ready to put these commands into practice? Get an Ubuntu VPS with full root access and practice process management in a real server environment perfect for developers and sysadmins who want hands-on experience without risking their local machine.
I'm fascinated by the IT world and how the 1's and 0's work. While I venture into the world of Technology, I try to share what I know in the simplest way with you. Not a fan of coffee, a travel addict, and a self-accredited 'master chef'.