Error in finding the PID by grep and assigning to a variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Error in finding the PID by grep and assigning to a variable
# 1  
Old 12-04-2012
Wrench Error in finding the PID by grep and assigning to a variable

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, once first batch is completed, it will start a new process of the custom_utility to process the next batch and this goes on till all batches are processed.
command executing at shell: ./Test2.sh -f=./input.txt

The Test2.sh should not exit till all the batch process of this file are completed by the custom utility.
For this reason, i used the while loop in which i am grepping for the PID having the name custom_utility & the input file and assigning it to a variable. if variable is blank, come out of loop is the logic.

Though the Sub process is running, the SUB_PID is returning blank and it is coming out of loop

Test.sh only contains the while loop logic and it is working fine.

Please help me in this regard.

-Chandra
***************************************************
Test2.sh
Code:
#! /bin/sh
if [ $# -eq 0 ]; then
    echo ""
    echo "No Parameter provided"
    usage
    exit 1
fi

# Parse command line options
for PARAM; do
    if [[ "$PARAM" = -f=* ]]; then
           FILE=$(echo $PARAM | cut -d"=" -f2)
           echo $FILE
    fi

done
    if [[   ( "$FILE" == "" )  ]]; then
            echo ""
            echo "File argument is not specified, exiting the script..."
            exit 1
    fi

    if [ ! -r ${FILE} ];then
            echo "Read access permission denied on $FILE File or File doesn't exists, exiting the script..."
            exit 1
    fi

COMMAND="custom_utility  -u=user1 -p=123 -filename=$FILE -batch_size=10"
echo "Command of Custom Utility is :"
echo ""
echo "custom_utility  -u=user1 -p=***** -f=send -filename=$FILE -batch_size=10"

$COMMAND &
CU_RC=$?
echo "lets wait till all custom_utility  process for this Input File are completed"
echo "PID : $!"
wait $PID
while true
do
        SUB_PID=`ps -ef | grep custom_utility  | grep $FILE | grep -v 'grep' | awk '{print $2}'`
        if [[  "$SUB_PID" == "" ]]; then
        break
        fi
        sleep 2
done

if [ $CU_RC -ne 0 ]; then
        echo "Error: Custom Utility for $FILE resulted in error"
        echo ""
        exit 992
fi
echo "***************************************************"
echo ""

# EOF
exit 0

***************************************************
Test.sh
Code:
#! /bin/sh

while true
do
        SUB_PID=`ps -ef | grep custom_utility | grep "./input.txt" | grep -v 'grep' | awk '{print $2}'`
        echo "SUB_PID : ~$SUB_PID~"
        if [[  "$SUB_PID" == "" ]]; then
        echo `date`
        break
        fi
        sleep 2
done

# 2  
Old 12-04-2012
Code:
echo "PID : $!"

That "$!" is the SUB_PID.
# 3  
Old 12-04-2012
Thank you jim mcnamara for reply.
$! is returning the parent PID only, which is not full filling my requirement.

Once the parent PID is completed, SUB PROCESS will start and it will have a new PID.

I should grep the sub process PID in while loop & till the completion of sub processes i need to wait and then i should break from the loop

Last edited by duddukuri; 12-06-2012 at 02:48 AM..
# 4  
Old 12-18-2012
I am able to resolve my issue.
when i am using the ps -ef, it is not giving the complete command line arguments. That is the reason for the issue. ps auxw will return the complete command line arguments.

Command Having Issue:
Code:
SUB_PID=`ps -ef | grep custom_utility | grep "./input.txt" | grep -v 'grep' | awk '{print $2}'`

Working One:
Code:
SUB_PID=`ps auxw | grep custom_utility | grep "./input.txt" | grep -v 'grep' | awk '{print $2}'`


Last edited by Franklin52; 12-19-2012 at 03:24 AM.. Reason: Please use code tags for data and code samples
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Assigning variable to output gives error with expected result

Hello, I am trying to print out the first string matching query with grep and I need your help. My scenario: Database John F 4433 Street No 88 CA Elisabeth Taylor 7733 Street No 26 ON Jack Nicholson 0133 Green Park No 34 AR John F 2 9399 Southpark No 02D UT test.sh... (6 Replies)
Discussion started by: baris35
6 Replies

2. Shell Programming and Scripting

Grep doesn't work when assigning to variable

Hello, First of all, I'd like to say hello to all members of forum. Can You please help me with the matter described below? I am trying to fetch a data from the file to variable, I am doing this using below script: returned=`tail -50 SapLogs.log | grep -i -E "Error|"` echo $returned ... (2 Replies)
Discussion started by: jedzio
2 Replies

3. AIX

Assigning PID for a Process

Hello Team, Is there anyway to assign a dedicated pid for a particular java process(application). Regards, Gowtham.G (5 Replies)
Discussion started by: gowthamakanthan
5 Replies

4. Solaris

Finding PID of Killing process

Say I have 2 processes(perl scripts on Solaris machine) A and B. the process A kill the process B. While in the process B how do I print the PID of the process that Killed it(process A) before dieing. My process A looks like open(STATS, "ps -ef|"); while ($inputLine = <STATS>) { if... (7 Replies)
Discussion started by: enigma_007
7 Replies

5. Shell Programming and Scripting

Finding PID of a process using variable substituition

Hi All, Am copying mulitple files in a directory in names File0,File1,File2 etc. I need to print separately the PID of these copies using File names. for((i=0;i<5;i++)) do mypid=`ps aux | awk '/File$i/ && !/awk/ { print $2 }'` echo PID is $mypid done It printed nothing. Thinking... (6 Replies)
Discussion started by: amio
6 Replies

6. Shell Programming and Scripting

Finding the nice(ni) number with PID?

Hi, is there a command that takes the PID of a process and that only diplays it's ni number? I`m pretty sure it would require pipes but I tried a few things that ended up miserably... Since the ps command doesn't show the ni unless I do ps -o ni but then I can't find a way to search the right... (2 Replies)
Discussion started by: Yakuzan
2 Replies

7. UNIX for Dummies Questions & Answers

number of occurence using grep -c then assigning it to a variable

Hi guys! I need to count the occurence of a certain pattern. For example the pattern is PC. the contents of the file sample.txt: A PC asdfgadfjkl asdfa PC sadfaf fdsPCasdfg if i use grep -c PC sample.txt it will display 3 as the number of occurence how do i save that number to a... (1 Reply)
Discussion started by: khestoi
1 Replies

8. Shell Programming and Scripting

Problem with assigning output of grep + awk to a variable

Hi All, I am getting the output for the following command when i run it on the unix console. --------------------------- grep `whoami` /etc/passwd | awk '{print ($1);}' | cut -d ":" -f3 ---------------------------- But i made it into a script and tried to print the variable, its... (5 Replies)
Discussion started by: meheretoknow
5 Replies

9. UNIX for Dummies Questions & Answers

Need to get pid of a process and have to store the pid in a variable

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

10. Filesystems, Disks and Memory

finding out the pid for a busy text file

Can some one please tell me how to find out the proccess ID that is holding up a file. I am attempting to remove a file and I am getting a message stating that it is busy. i.e rm filename filename: 777 mode ? (y/n) y rm: filename not removed. Text file busy Thanks in advance. (1 Reply)
Discussion started by: jxh461
1 Replies
Login or Register to Ask a Question