How to View and Kill Processes Using the Terminal in Mac OS X
Occasionally in Mac OS X, it may be necessary to force a program or process to quit. For example, if a particular program fails to respond or unexpectedly hangs. Every application on a Mac comprises of one or more processes.
It’s usually possible to use the Force Quit command (⌘⌥ esc) in the Apple Menu, but only individual applications are listed in the Force Quit Applications window rather than all processes which are running on your computer.
The basic steps to check and kill a process are:
- Open the Terminal application
- List the running processes
- Find the process you want to close
- Kill the process
Probably the most useful tool to check and kill processes is called Terminal, which is an application that provides access to the lower levels of the Mac OS X operating system and files. Terminal is a text-based tool which lets you conduct all manner of routine tasks such as viewing directories, copying, moving and deleting files, as well as obtain detailed information about each process running including:
- the process ID (PID)
- the elapsed time spent running
- the command or application file path
About Activity Monitor
A related indispensable application is Activity Monitor - a graphical tool that allows you to manage processes, however it doesn’t have quite the same capabilities that Terminal does. Activity Monitor shows common process-related details such as the memory used and percentage of CPU that each process is consuming. When used together, Activity Monitor and Terminal provide a powerful yet relatively straightforward way to inspect and manage wayward processes.
The main Activity Monitor window is shown below.
Each application on your Mac has an associated Process ID (a PID) and a user-friendly name. From here you can inspect or quit each process, but in this example we use Activity Monitor simply as a companion to Terminal.
The Apple Mail application is displayed in Activity Monitor with a PID number of 14649. Note that process ID’s are assigned by Mac OS, and therefore will not be the same on your computer as somebody else’s.
How to Use Terminal
The first step is to open Terminal either from the Applications -> Utilities folder or simply type Terminal into Spotlight. Terminal is always represented by the icon below.
Once it opens you’ll be presented with a standard Terminal window as below.
The first line shows the date and time when you last logged in. The second line is the command prompt which is where you enter the commands you wish to execute . The command prompt always begins with your computer name followed by your local Account Name.
The current directory (the “working directory”) when you open Terminal always defaults to your Home Folder.
Basic Terminal Commands
Before we describe how to check and terminate a process on your computer it’s worth knowing a few basic Terminal commands.
- To show the current folder name type pwd
- To list the files in the current folder type ls -l
- To move into another folder type cd <folder name>
Note that many commands in Terminal can accept various options (sometimes called switches) that can alter their effect. The simplest way to discover the available command-line options is to type the command into Terminal followed by -? such as ls -?
Another useful command is apropos. Enter apropos <command> into the Terminal window for a description of that command and its options.
To View All Processes
- Type ps -ax at Terminal’s command prompt to list every process running, along with additional details such as the PID, the elapsed time running, and the process name and location (shown in the CMD column)
To Find a Specific Process
The process list displayed using ps -ax may include a hundred or more processes, but it’s quite simple to identify a process based on the name in the CMD column (for example Skype is listed as /Applications/Skype.app/Contents/MacOS/Skype), or even by the PID if you already know it.
As shown in Activity Monitor earlier, the Mail application on my Mac had the PID 14649, so it’s simple to scroll down the Terminal window until the relevant process is found.
One very useful command to help find a process by name or PID is grep which can filter out the desired information. It can be used in conjunction with the ps -ax command to list only the process that you are interested in.
- At the command prompt type ps -ax | grep <application name>. For example ps -ax | grep Skype
The “pipe” function (“|”) simply uses the output from the process list as an input to grep, to filter out the desired process name.
Assuming that Skype is actually running, you may see a result something like this:
Roland-Bankss-MacBook-Pro:~ roly$ ps -ax | grep Skype 14530 ?? 0:56.32 /Applications/Skype.app/Contents/MacOS/Skype -psn_0_9218250 14947 ttys000 0:00.00 grep Skype
This example shows that Skype has a PID of 14530 and also the folder where Skype was launched from. The last line is just the process ID of the grep command itself, which can be safely ignored.
Repeating the command with the Skype process ID instead i.e. ps -ax | grep Skype yields the same result.
To Terminate (Kill) a Process
Once you know the process ID, killing it using Terminal is very simple. Be cautious however because forcing a process to suddenly exit can have unforeseen consequences, so it’s advisable to check carefully that the process you are about to kill is the correct one. There are essentially two easy ways to kill a process:
- By PID: the simplest way is with the kill command followed by the PID, which causes the selected process to terminate immediately. In the Sky example, kill 14530 does the job and causes the process to exit immediately
- By name: this method uses the killall command to kill all the processes that contain that name. For example killall Skype will terminate all the processes that have Skype in their name
Caution: killall should be used sparingly to avoid accidentally terminating the wrong processes. There is no confirmation prompt to ask if you really do wish to kill the processes, so check carefully beforehand