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

52,501

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.

Share:
52,501
alphanumeric
Author by

alphanumeric

Updated on June 19, 2020

Comments

  • alphanumeric
    alphanumeric almost 4 years

    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....

  • glenn jackman
    glenn jackman about 10 years
    don't need grep here: ps aux | awk '/python/ {print $2}' | xargs kill
  • Mark Setchell
    Mark Setchell about 10 years
    Glenn: That is more elegant than my answer, please go ahead and suggest it yourself and grab the points - you won't offend me. I'll vote for you! Also, please tell me how I can refer to your name (which contains a space) using the @ mechanism. Thank you.
  • glenn jackman
    glenn jackman about 10 years
    I think if you just use "@glenn", that will notify me. Usually in a comment, you can type "@gl" and my name will be auto-suggested in which case you can hit Tab to complete. However if you're replying to the previous comment, the system figures out who you're replying to. It all pretty much just works. Regarding the points, my code was just a refinement of yours, it's not a substantially new answer.
  • jbustamovej
    jbustamovej almost 8 years
    kill -9 $(ps aux | grep python | grep -v grep | awk '{print $2}') worked for me
  • n13
    n13 about 6 years
    did not work for me - killall simply didn't work as advertised, it killed nothing. OS X 10.13.3
  • n13
    n13 about 6 years
    Brilliant, saved me from restart. Because I had processes spawning all the time in my terminal I got the message that "fork: Resource temporarily unavailable". I tried to kill processes in Activity Monitor but that was too slow. So I quit some programs that were running - Mail, Safari - and very quickly switched to terminal and ran the ps aux.... command - BAM. 1,300 processes killed!