How to kill a process in MacOS?
Categories:
Mastering Process Termination on macOS: A Comprehensive Guide

Learn various methods to effectively kill unresponsive or unwanted processes on your macOS system, from graphical interfaces to powerful command-line tools.
On macOS, applications and background processes occasionally become unresponsive, consume excessive resources, or simply need to be stopped. Knowing how to properly terminate these processes is a fundamental skill for maintaining system performance and troubleshooting issues. This guide will walk you through several methods, ranging from user-friendly graphical options to advanced command-line techniques, ensuring you can always regain control of your system.
Understanding Process States and Termination Signals
Before diving into the 'how-to', it's helpful to understand what happens when you try to kill a process. When you initiate a termination command, the operating system sends a signal to the target process. Different signals prompt different responses from the process. The most common signals you'll encounter are:
- SIGTERM (15): This is the default and most graceful termination signal. It asks the process to shut down cleanly, allowing it to save data and release resources before exiting. Most applications respond to this by closing normally.
- SIGKILL (9): This is the most forceful termination signal. It immediately stops the process without giving it a chance to save data or clean up. Use this as a last resort for truly unresponsive processes, as it can lead to data loss or corrupted files if the process was in the middle of an operation.
flowchart TD A[User Initiates Kill] --> B{Process Responds to SIGTERM?} B -- Yes --> C[Process Shuts Down Gracefully] B -- No --> D{User Initiates Force Kill (SIGKILL)?} D -- Yes --> E[Process Terminates Immediately] D -- No --> F[Process Remains Running/Unresponsive]
Process Termination Flow on macOS
Method 1: Using the Force Quit Applications Window (GUI)
This is the simplest and most common way to terminate unresponsive applications with a graphical user interface. It's equivalent to sending a SIGTERM signal, but if the application doesn't respond, macOS will offer to force quit it (equivalent to SIGKILL).
1. Open Force Quit Applications
Press Command (⌘) + Option (⌥) + Esc
simultaneously. This will open the 'Force Quit Applications' window.
2. Select the Application
In the window, select the unresponsive application from the list.
3. Force Quit
Click the 'Force Quit' button. Confirm your choice if prompted.
Method 2: Using Activity Monitor (GUI)
Activity Monitor provides a more detailed view of all running processes, including background processes and services. It allows you to identify resource hogs and terminate them. You can choose between a graceful quit or a forceful one.
1. Open Activity Monitor
Navigate to Applications > Utilities > Activity Monitor
, or use Spotlight Search (Command (⌘) + Space
) and type 'Activity Monitor'.
2. Identify the Process
In Activity Monitor, you can sort processes by CPU, Memory, Energy, Disk, or Network usage to find the problematic one. Use the search bar in the top right if you know the process name.
3. Terminate the Process
Select the process you want to kill. Click the 'X' button in the toolbar (usually in the top-left corner of the window). You will be prompted with two options: 'Quit' (sends SIGTERM) or 'Force Quit' (sends SIGKILL).
Method 3: Using the Terminal (Command Line)
For advanced users, the Terminal offers the most powerful and precise control over processes. This is particularly useful for background processes without a GUI, or when graphical methods fail. You'll primarily use the ps
, grep
, kill
, and killall
commands.
kill
or killall
in the Terminal, especially with sudo
or SIGKILL
. Terminating critical system processes can lead to system instability or a crash. Always double-check the process ID (PID) or name before executing.Finding a Process with ps
and grep
First, you need to find the Process ID (PID) or the exact name of the process you want to kill. The ps
command lists running processes, and grep
filters the output.
ps aux | grep [process_name]
Find processes containing 'process_name'. The [process_name]
is enclosed in square brackets to prevent grep
from matching itself.
For example, to find processes related to 'Safari':
ps aux | grep [S]afari
Example of finding Safari processes.
The output will show lines like:
youruser 1234 0.0 2.5 4567890 123456 ?? S 10:00AM 0:05.00 /Applications/Safari.app/Contents/MacOS/Safari
The second column (1234
in this example) is the PID.
Killing a Process by PID with kill
Once you have the PID, you can use the kill
command. By default, kill
sends a SIGTERM (graceful shutdown).
kill [PID]
Gracefully terminate a process using its PID.
To force kill (SIGKILL) an unresponsive process, use the -9
option:
kill -9 [PID]
Forcefully terminate a process using its PID.
Killing Processes by Name with killall
The killall
command allows you to terminate all processes matching a specific name, without needing to find their PIDs first. This is very convenient but also more powerful, so use it with care.
killall [process_name]
Gracefully terminate all processes with a given name.
To force kill all processes with a specific name:
killall -9 [process_name]
Forcefully terminate all processes with a given name.
killall
, you can use ps aux | grep [partial_name]
first to verify the full name of the process you intend to kill.