70

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

  1. variable=get pid of process by processname.
  2. Then use this command kill -9 variable.
Benjamin Loison
5,7514 gold badges20 silver badges37 bronze badges
asked Jul 3, 2013 at 5:47

6 Answers 6

110

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
Benjamin Loison
5,7514 gold badges20 silver badges37 bronze badges
answered Jul 3, 2013 at 5:52
Sign up to request clarification or add additional context in comments.

2 Comments

a way to avoid the "grep -v grep" is to use "grep <process nam[e]>" so it interpolates the string and the process nam[e] isn't found when the first grep executes, if that makes sense.
I think this is easier pgrep -f <process name> | awk '{print "kill -9 " 1ドル}' | sh
86
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>
Benjamin Loison
5,7514 gold badges20 silver badges37 bronze badges
answered Jul 3, 2013 at 5:55

8 Comments

$ pids=$(pgrep admin_adrrtwls02) $ kill -9 $pids Usage: kill [-l] [-n signum] [-s signame] job ... Or: kill [ options ] -l [arg ...]
Unix programs tend print out their usage description when needed arguments are not given. In your example, most probably no process with the name admin_adrrtwls02 was found. Therefore $pids evaluates to the empty string and kill is executed without a process id argument. pgrep searches for a process name, not for the user name. But there also are the flags -u and -U to restrict pgrep to given user ids.
there was process with this name admin_adrrtwls02. The above answer by Ben solved my problem. His solution worked.
pkill doesn't require -9. For example you can use pkill firfox.
-9, used to send SIGKILL, is not required, but mentioned in the question. Without it, the less violent SIGTERM (Signal number 15) will be sent.
|
41

On a single line...

pgrep -f process_name | xargs kill -9
Bijan
26.6k8 gold badges82 silver badges73 bronze badges
answered Mar 26, 2016 at 17:25

1 Comment

As already mentioned in other comments the -f parameter could be helpful here ` -f The pattern is normally only matched against the process name. When -f is set, the full command line is used.` pgrep -f process_name | xargs kill -9
18

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
Benjamin Loison
5,7514 gold badges20 silver badges37 bronze badges
answered Jun 13, 2014 at 9:54

Comments

0

Solution (Exact Process Name Match)

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)

Details

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 
answered Apr 1, 2023 at 19:21

Comments

0

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 run whatever it is piped you have to use -i (interactive mode) otherwise you may have issues with the command.

ps axf | grep <process name> | grep -v grep | awk '{print "kill -9 " 1ドル}'? ps aux | grep [n]ame | awk '{print "kill -9 " 2ドル}'? isn't that better?

Benjamin Loison
5,7514 gold badges20 silver badges37 bronze badges
answered Dec 20, 2017 at 10:07

1 Comment

even better: pidof name |xargs -i kill -9 {} ? no ?

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.