Operating System - HP-UX
1748201 Members
2965 Online
108759 Solutions
New Discussion юеВ

Re: Shell script that finds a process by name, then kills

 
SOLVED
Go to solution
OldSchool
Honored Contributor

Re: Shell script that finds a process by name, then kills

As noted above, the "UNIX95" switch won't work in this case, as he's looking at command parm, the actual job is "jsh".

I suspect that pgrep / pkill will have the same issue
Dennis Handly
Acclaimed Contributor

Re: Shell script that finds a process by name, then kills

>OldSchool: the UNIX95 switch won't work in this case

That doesn't matter, you should always use UNIX95=EXTENDED_PS with ps(1). ;-)
My alias does that.
And if we really wanted to be picky, that should be fgrep or "GLB\.JOB".
James R. Ferguson
Acclaimed Contributor

Re: Shell script that finds a process by name, then kills

Hi:

> OldSchool: the UNIX95 switch won't work in this case

I disagree if the process name is also known. If it isn't then I would agree.

Using the UNIX95 mode of 'ps' _will_ help _isolate_ the process by name. Then, a simple 'awk' can filter the match a bit more and issue the 'kill'.

> Dennis: you should always use UNIX95=EXTENDED_PS with ps(1). ;-)

Well, that's your preference and I will agree that it does eliminate ambiguity for many, but that is _not_ strictly necessary. Wriing "UNIX95= " with trailing whitespace is sufficient to set/define the environment. ;-)

So, in all, one might meld several thoughts together into something like:

# UNIX95= ps -C jsh -o pid= -o args=|awk '/GBL\.JOB.+/ {system("kill " $1)}'

...which looks for processes named 'jsh' with command arguments that contain "GBL.JOB*" [ which we might be able to anchor to the end of the string ] and then kills them. The "=" sign after the 'pid' and 'args' options suppresses the heading line so we don't have to deal with it.

Regards!

...JRF...

Dennis Handly
Acclaimed Contributor

Re: Shell script that finds a process by name, then kills

>JRF: that's your preference

That's not my point. My point to OldSchool was that you should use UNIX95 with ps, even if it "won't work in this case".
James R. Ferguson
Acclaimed Contributor

Re: Shell script that finds a process by name, then kills

Hi:

> Dennis: >JRF: that's your preference
That's not my point. My point to OldSchool was that you should use UNIX95 with ps, even if it "won't work in this case".

And I _absolutely_ agree. At the least, one can match a process name without undo fuss [ as for instance, when using 'grep |grep -v ' or other skulduggery to avoid matching yourself (the 'grep') ].

Interestingly, 'pgrep()' and 'pkill()' available in 11.31 avoid matching themselves.

With warm Regards!

...JRF...
OldSchool
Honored Contributor

Re: Shell script that finds a process by name, then kills

I agree w/ both Dennis and JRF....

the point I was trying to make is that since the process is jsh, he can't use "GLB.JOB" for the process field, and for the same reason pkill probably won't succeed either....he'd have to look for the jsh process and then do additional filtering.

I should have been more clear....
rmueller58
Valued Contributor

Re: Shell script that finds a process by name, then kills

ps -ef |grep -v -f /usr/local/bin/patt.1 |grep $1 > temp.1
kill -9 `awk '{print $2}' temp.1`
rm temp.1


where $1 = GLB.JOB*