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
#! /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
#! /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