How to kill all processes with the same name using OS X Terminal

Getting the following output from running this:

ps aux | grep Python

Output:

user_name  84487   0.0  0.0        0      0   ??  Z    12:15PM   0:00.00 (Python)
user_name  84535   0.0  0.0        0      0   ??  Z    12:16PM   0:00.00 (Python)

I want to terminate all Python processes currently running on a machine....


Solution 1:

use pkill, with the -f option.

pkill -f python

If you don't have pkill pre-installed (some osx's don't...), try proctools.

Solution 2:

If you don't have pkill, you can try this:

ps aux | grep python | grep -v grep | awk '{print $2}'

If that gives you the PIDs you want to kill, join that up with the kill command like this

kill $(ps aux | grep python | grep -v grep | awk '{print $2}')

That says... kill all the PIDs that result from the command in parentheses.

Solution 3:

killall python

Will do the trick.

Solution 4:

@shx2: Thanks for the trick! Here are the steps to make it work:

Step1:

cd /usr/bin

Step2:

touch "pkill"

Step3: With textEditor of your choice open the file you just created: /usr/bin/pkill (do it with sudo or be Admin). Copy/paste this and save:

for X in `ps acx | grep -i $1 | awk {'print $1'}`; do
  kill $X;
done

Step3: Set file attribute

sudo chmod 755 /usr/bin/pkill

Now you ready to terminate any process using a simple syntax:

For example, to terminate all Python processes open a shell and type:

pkill Python

All python processes should be gone by now.