Unix/Linux Go Back    


Shell Programming and Scripting Unix shell scripting - KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and shell scripts and shell scripting languages here.

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

Shell Programming and Scripting


Closed Linux or Unix Question    
 
Thread Tools Search this Thread Display Modes
    #1  
Old Unix and Linux 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 Unix and Linux 12-04-2012
jim mcnamara jim mcnamara is offline Forum Staff  
...@...
 
Join Date: Feb 2004
Last Activity: 30 June 2015, 4:49 PM EDT
Location: NM
Posts: 10,495
Thanks: 344
Thanked 869 Times in 807 Posts

Code:
echo "PID : $!"

That "$!" is the SUB_PID.
Sponsored Links
    #3  
Old Unix and Linux 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 Unix and Linux 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 Linux or Unix Question

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Linux 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 12:51 AM.