Reputation: 889
By using "ucbps" command i am able to get all PIDs
$ ucbps
Userid PID CPU % Mem % FD Used Server Port
=========================================================================
512 5783 2.50 16.30 350 managed1_adrrtwls02 61001
512 8896 2.70 21.10 393 admin_adrrtwls02 61000
512 9053 2.70 17.10 351 managed2_adrrtwls02 61002
I want to do it like this, but don't know how to do
Upvotes: 70
Views: 277514
Reputation: 7163
pgrep -x <process_name> | xargs kill -9
(incidentally, for this specific use case, might as well do pkill -9 -x <process_name>
, but the question asked how to get the PID in general)
The problem with the accepted answer (and all other answers) is that pgrep
without -x
(or manually ps | grep
, or, for some reason, pidof
) will match processes for which the <process_name>
term is a substring.
So, for example, pgrep installd
matches, on my machine (macOS 13.0 22A380 arm64
) now:
❯ pgrep -l installd
316 uninstalld
33158 system_installd
33160 installd
I obviously only want 33160
, not the other ones.
For some reason, pidof
has the same issue:
❯ pidof installd
316 33158 33160
pregp -x
is the the only viable solution (beyond messing around with regexes with the ps | grep
solution, I suppose)
❯ pgrep -xl installd
33160 installd
Upvotes: 0
Reputation: 1
use grep [n]ame to remove that grep -v name this is first... Sec using xargs in the way how it is up there is wrong to rnu whatever it is piped you have to use -i ( interactive mode) otherwise you may have issues with the command.
ps axf | grep | grep -v grep | awk '{print "kill -9 " $1}' ? ps aux |grep [n]ame | awk '{print "kill -9 " $2}' ? isnt that better ?
Upvotes: 0
Reputation: 8181
Another possibility would be to use pidof
it usually comes with most distributions. It will return you the PID of a given process by using it's name.
pidof process_name
This way you could store that information in a variable and execute kill -9
on it.
#!/bin/bash
pid=`pidof process_name`
kill -9 $pid
Upvotes: 18
Reputation: 2494
pids=$(pgrep <name>)
will get you the pids of all processes with the given name. To kill them all, use
kill -9 $pids
To refrain from using a variable and directly kill all processes with a given name issue
pkill -9 <name>
Upvotes: 86
Reputation: 52863
If you want to kill -9 based on a string (you might want to try kill first) you can do something like this:
ps axf | grep <process name> | grep -v grep | awk '{print "kill -9 " $1}'
This will show you what you're about to kill (very, very important) and just pipe it to sh
when the time comes to execute:
ps axf | grep <process name> | grep -v grep | awk '{print "kill -9 " $1}' | sh
Upvotes: 110