pfind, pgrep and pkill on Mac OSX

Having taken these commands for granted on stock linux, it’s always a little waste-of-time to be listing out processes bound to specific ports that I want to kill; and then killing that process by its PID.

For instance,


calvin$ lsof -i -P | grep -i "listen"
VLCStream 309 calvin 6u IPv4 0xffffff80127fc4e0 0t0 TCP *:54340 (LISTEN)
VLCStream 309 calvin 9u IPv6 0xffffff80127f9700 0t0 TCP *:54340 (LISTEN)
Dropbox 310 calvin 19u IPv4 0xffffff8016c31880 0t0 TCP *:17500 (LISTEN)
Dropbox 310 calvin 25u IPv4 0xffffff8016e23c20 0t0 TCP localhost:26164 (LISTEN)
iTunes 2447 calvin 27u IPv4 0xffffff8026554c20 0t0 TCP *:3689 (LISTEN)
iTunes 2447 calvin 28u IPv6 0xffffff80127f9ac0 0t0 TCP *:3689 (LISTEN)
GoogleTal 5650 calvin 25u IPv4 0xffffff801724d500 0t0 TCP localhost:63495 (LISTEN)
GoogleTal 5650 calvin 29u IPv4 0xffffff8020123de0 0t0 TCP localhost:63496 (LISTEN)
Skype 6659 calvin 49u IPv4 0xffffff80182744e0 0t0 TCP *:29945 (LISTEN)
python 6841 calvin 5u IPv4 0xffffff801724b160 0t0 TCP localhost:8000 (LISTEN)
python 6843 calvin 5u IPv4 0xffffff801724b160 0t0 TCP localhost:8000 (LISTEN)

tells me that I have these processes listening to specific ports as above.

Killing specific processes that I want gone will then be kill -9 6841 6843 for example.

Mac OSX does not come with pfind, pgrep and pkill by default.  To add in these programs that we take for granted on stock linux, we install

calvin$ sudo port -v install proctools
...

x ./opt/local/bin/pfind
x ./opt/local/bin/pgrep
x ./opt/local/bin/pkill
---> Cleaning proctools
---> Removing work directory for proctools
---> Updating database of binaries: 100.0%
---> Scanning binaries for linking errors: 100.0%
---> No broken files found.

and we will now have all our time-saving commands pfind, pgrep and pkill; and this

calvin$ pkill -9 python

will now kill off my python processes by name, particularly when I am working on my python projects and I need to terminate the process and I accidentally hit Ctrl+Z instead of Ctrl+C.

Ctrl+Z does not actually terminate my running python development server as that is “undo”.  Ctrl+C is the keyboard shortcut that terminates the python process properly and frees up the port.