03-14-2010
Using grep to extract PID
Hi unix experts!
I need help to solve the following problem:
I'm getting the prstat info:
stats=`prstat 0 1` #dont worry about how many processes are running I'm aware that no all processes will be listed without the -n (specify number)
then I'm doing the following to extract the PIDs:
pids=`echo "$stats" | awk '{print $1}'`
pids=`echo $pids | sed -e 's/PID//' | sed -e 's/Total://'` #to remove the Total and PID lines which are not required
Then I'm iterating through the PID's and trying to grep for each of the PID's my running ps. That way I'm able to look up things like the arguments and command rather than just the PID. The aim of doing this is eventually I want to replace the PID output from prstat to something more meaningful with command and args info for that process. This is the code for that:
for i in $pids
do
output=`ps -eaf -o pid,comm,args | grep ^' '*$i' '`
...
The output I'm getting is :
Usage: grep -hblcnsviw pattern file . . .
prstat_script.sh: *7 : not found
If I put in the escape characters i.e. output=`ps -eaf -o pid,comm,args | grep \^\' \'*$i\' \'` then I get:
grep: can't open '*7'
grep: can't open '
This is obviously because grep sees a space and tries to use '$i' as the file name. This is not what I want to achieve though.
If I run the non-escaped version on the command line (not in a bash script) then it works fine and gives me the output i desire, e.g.:
bash-3.00$ ps -eaf -o pid,comm,args | grep ^' '*1008' '
gives the output:
1008 /usr/lib/saf/ttymon /usr/lib/saf/ttymon
Thing is I don't know how to do this in the bash script.
Your help would really be appreciated.
Thanks very much in advance.
Sanjay
10 More Discussions You Might Find Interesting
1. Programming
question: for the below program
i just printed the value for pid, child pid and parent pid
why does it give me 6 values? i assume ppid is 28086
but can't figure out why there are 5 values printed instead of just two!
can someone comment on that!
#include<stdio.h>
#define DIM 8
int... (3 Replies)
Discussion started by: a25khan
3 Replies
2. UNIX for Dummies Questions & Answers
1. If I use an software application(which connects to the database in the server) in my local pc, how many PID should be registered? Would there be PID for the session and another PID for socket connection?
2. I noticed (through netstat) that when I logged in using the my software application,... (1 Reply)
Discussion started by: pcx26
1 Replies
3. Shell Programming and Scripting
Hi
I am writing a shell script in ksh where I have to grep for a process name , say XYZ from "ps -ef" and then extract it's PID.
ps -ef | grep XYZ gives -
" int 7738 25734 1 02:00:49 pts/tc 0:00 grep XYZ"
I am thinking of replacing one or more occurrences of the space with pipe... (7 Replies)
Discussion started by: nsinha
7 Replies
4. UNIX for Dummies Questions & Answers
Hi,
I need to get the pid of a process and have to store the pid in a variable and i want to use this value(pid) of the variable for some process. Please can anyone tell me how to get the pid of a process and store it in a variable. please help me on this.
Thanks in advance,
Amudha (7 Replies)
Discussion started by: samudha
7 Replies
5. UNIX for Dummies Questions & Answers
Hi all,
i have a script called a.sh and within a.sh it calls b.sh.
when i do a ps -ef | grep a.sh, i get two sets of number
user_test 4225 3250 0 10:31 pts/1 00:00:00 a.sh
when i do a ps -ef | grep b.sh, i get two sets of number
user_test 4269 4225 22 10:31 pts/1 00:00:45... (17 Replies)
Discussion started by: new2ss
17 Replies
6. Shell Programming and Scripting
hi all,
for an example:
$ ps -ef | grep apache | awk '{ print $2, $3 }'
24073 11784
28021 1
28022 1
28038 1
28041 28040
28045 28041
28047 28041
28040 1
28049 28041
28051 28041
28053 28041
28030 1
28054 28041
28055 28041
28056 28041
28057 28041 (5 Replies)
Discussion started by: raghur77
5 Replies
7. Shell Programming and Scripting
I have a file current.csv file
2011/05/06 11:12:20 | 16:guest pid=014782 opened Boards 0, 1, 2, 3
2011/05/06 12:23:13 | 16:guest pid=014782 closed
2011/05/06 12:26:05 | 17:guest pid=022383 opened Boards 0, 1, 2, 3
2011/05/06 20:09:04 | 17:guest pid=022383 closed
2011/05/06... (5 Replies)
Discussion started by: sabercats
5 Replies
8. Shell Programming and Scripting
Can anyone explain the below script which is used to extract the PID?
Why they are taking from 10 character and getting the sub string?
Note:variable pid has been assigned the PID value initially as below.
pid=`sed 's@FILNAME@'$destFil'@g' $scriptname |sed 's@SRCFILE@'$sourceFil'@g' |sed... (2 Replies)
Discussion started by: bk_12345
2 Replies
9. Shell Programming and Scripting
Hello All,
I am facing difficulty in getting the PID value & then assigning it to a variable,
kindly help me in resolving the issue.
Thanks a lot in advance.
The custom utility used inside the Test2.sh will process the file in a batch of 10 lines at once and for efficient memory management,... (3 Replies)
Discussion started by: duddukuri
3 Replies
10. AIX
Hi All,
I am using netstat on AIX to grep info on all open connections. However, unlike on Linux(Centos), I do not get the PID and program name using netstat on AIX.
I need this info to be clubbed along with the information retrieved using netstat version of AIX. Is there a way this can be... (1 Reply)
Discussion started by: Vipin Batra
1 Replies
LEARN ABOUT CENTOS
hwloc-ps
HWLOC-PS(1) hwloc HWLOC-PS(1)
NAME
hwloc-ps - List currently-running processes or threads that are bound
SYNOPSIS
hwloc-ps [options]
OPTIONS
-a list all processes, even those that are not bound to any specific part of the machine.
-p --physical
report OS/physical indexes instead of logical indexes
-l --logical
report logical indexes instead of physical/OS indexes (default)
-c --cpuset
show process bindings as cpusets instead of objects.
-t --threads
show threads inside processes. If -a is given as well, list all threads within each process. Otherwise, show all threads inside
each process where at least one thread is bound.
--whole-system
Do not consider administration limitations.
--pid-cmd <cmd>
Append the output of the given command to each PID line. For each displayed process ID, execute the command <cmd> <pid> and
append the first line of its output to the regular hwloc-ps line.
DESCRIPTION
By default, hwloc-ps lists only those currently-running processes that are bound. If -t is given, processes that are not bound but contain
at least one bound thread are also displayed, as well as all their threads.
hwloc-ps displays process identifier, command-line and binding. The binding may be reported as objects or cpusets.
By default, process bindings are restricted to the currently available topology. If some processes are bound to processors that are not
available to the current process, they are ignored unless --whole-system is given.
The output is a plain list. If you wish to annotate the hierarchical topology with processes so as to see how they are actual distributed
on the machine, you might want to use lstopo --ps instead (which also only shows processes that are bound).
The -a switch can be used to show all processes, if desired.
EXAMPLES
If a process is bound, it appears in the default output:
$ utils/hwloc-ps
4759 Core:0 myprogram
If a process is not bound but 3 of his 4 threads are bound, it only appears in the thread-aware output:
$ utils/hwloc-ps
$ utils/hwloc-ps -t
4759 Machine:0 myprogram
4759 Machine:0
4761 PU:0
4762 PU:2
4765 PU:1
To display the binding of already running MPI processes (launched by Open MPI) and append their MPI rank (in MPI_COMM_WORLD) to each line:
$ utils/hwloc-ps --pid-cmd myscript
29093 L1dCache:0 myprogram OMPI_COMM_WORLD_RANK=0
29094 L1dCache:2 myprogram OMPI_COMM_WORLD_RANK=1
29095 L1dCache:1 myprogram OMPI_COMM_WORLD_RANK=2
29096 L1dCache:3 myprogram OMPI_COMM_WORLD_RANK=3
where myscript is a bash script doing:
#!/bin/sh
cat /proc/$1/environ 2>/dev/null | xargs --null --max-args=1 echo | grep OMPI_COMM_WORLD_RANK
SEE ALSO
hwloc(7), lstopo(1), hwloc-calc(1), hwloc-distrib(1)
1.7 Apr 07, 2013 HWLOC-PS(1)