Error in finding the PID by grep and assigning to a variable | Unix Linux Forums | Shell Programming and Scripting

  Go Back    


Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

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

Shell Programming and Scripting


Closed Thread    
 
Thread Tools Search this Thread Display Modes
    #1  
Old 12-04-2012
duddukuri duddukuri is offline
Registered User
 
Join Date: Oct 2009
Last Activity: 29 March 2013, 2:04 AM EDT
Posts: 8
Thanks: 0
Thanked 0 Times in 0 Posts
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

Sponsored Links
    #2  
Old 12-04-2012
jim mcnamara jim mcnamara is offline Forum Staff  
...@...
 
Join Date: Feb 2004
Last Activity: 22 October 2014, 11:15 AM EDT
Location: NM
Posts: 10,247
Thanks: 281
Thanked 803 Times in 747 Posts

Code:
echo "PID : $!"

That "$!" is the SUB_PID.
Sponsored Links
    #3  
Old 12-04-2012
duddukuri duddukuri is offline
Registered User
 
Join Date: Oct 2009
Last Activity: 29 March 2013, 2:04 AM EDT
Posts: 8
Thanks: 0
Thanked 0 Times in 0 Posts
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 01:48 AM..
    #4  
Old 12-18-2012
duddukuri duddukuri is offline
Registered User
 
Join Date: Oct 2009
Last Activity: 29 March 2013, 2:04 AM EDT
Posts: 8
Thanks: 0
Thanked 0 Times in 0 Posts
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 02:24 AM.. Reason: Please use code tags for data and code samples
Sponsored Links
Closed Thread

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Assigning PID for a Process gowthamakanthan AIX 5 05-02-2012 06:32 PM
Finding PID of a process using variable substituition amio Shell Programming and Scripting 6 03-12-2009 08:03 AM
number of occurence using grep -c then assigning it to a variable khestoi UNIX for Dummies Questions & Answers 1 02-23-2009 02:59 PM
Problem with assigning output of grep + awk to a variable meheretoknow Shell Programming and Scripting 5 12-16-2008 03:50 AM
Need to get pid of a process and have to store the pid in a variable samudha UNIX for Dummies Questions & Answers 7 08-05-2008 03:24 AM



All times are GMT -4. The time now is 09:39 PM.