The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
Google UNIX.COM


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

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
killing the process arthi UNIX for Dummies Questions & Answers 3 06-03-2008 05:57 AM
Killing of a process and send a mail if the process doesnot come up within 2 minutes Prince89 Shell Programming and Scripting 1 02-15-2008 03:10 PM
killing a process from a script jalge2 AIX 4 01-19-2006 06:46 AM
Killing a process from perl script. sharuvman Shell Programming and Scripting 3 04-01-2004 09:10 AM
killing process using a script skotapal Shell Programming and Scripting 4 12-12-2002 12:05 PM

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 10-10-2007
Registered User
 

Join Date: Jul 2007
Posts: 15
While killing the process, Script gets hanged. Please help me on this.

Hi Everyone,

I have written a script to automate the docbase cleanup process on every weekly basis. That is in this script i have to shutdown the docbase and then kill all the process that are hanged except one process(epic process) and need to delete some log files and then i have to start the docbase.

The following is the content of the script,

#!/bin/ksh
# docbase cleanup process
DM_DBA=/apps/documentum/dba
cd $DM_DBA

# Next, set up the logfile.
logdir=/apps/documentum/dba/log
if [ ! -d $logdir ] ; then
echo "$0: Fatal error: missing directory $logdir"
exit 1
fi

logfile=/apps/documentum/dba/log/test.log
echo "\n *****Space before cleanup process**** \n" > $logfile
df -k >> $logfile

# process running before shut down
echo "\n *************** Process running before shutdown **************** \n" >> $logfile
ps -ef|grep doc >> $logfile

#shut down Legal
echo "\n ************** shut down Legal ************** \n" >> $logfile
./dm_shutdown_legal >> $logfile
status=$?
if [ ! $status = 0 ] ; then
cat <<-END
***** ERROR DURING LEGAL SHUTDOWN *****
********The legal dmshutdown utility reported a non-zero status **********
END
exit 1
fi

#shut down Docbroker
echo "\n ********** shut down Docbroker *******************\n" >> $logfile
./dm_stop_docbroker
status=$?
if [ ! $status = 0 ] ; then
cat <<-END
***** ERROR DURING DOCBROKER SHUTDOWN *****
********The docbroker shutdown utility reported a non-zero status **********
END
exit 1
fi

#Killing all the process except the Epic process
echo "\n *** Killing process except epic process ******* \n" >> $logfile

ps -ef|grep doc| grep -v '/apps/documentum/epic5.1/bin/sun4r5/adeptlmd -s180 -e /apps/documentum/epic5.1/'|grep -v grep|awk '{print $2}'| xargs kill -9
echo "after killing the process"

#Delete test.out file in buildcd
buildcddir=/apps/documentum/cdrom/apps/buildcd
if [ ! -d $buildcddir ] ; then
echo "\n $0: Fatal error: missing directory $buildcddir \n" >> $logfile
exit 1
fi
buildcdfile= $buildcddir/test.out
if [ -f $buildcdfile ]
then
echo "\n *************** test.out file exist in builcd path ****************\n" >> $logfile
rm $buildcdfile >> $logfile
fi

#starting docbroker
echo " \n ************* starting docbroker ************** \n" >>$logfile
./dm_launch_docbroker >>$logfile
status=$?
if [ ! $status = 0 ] ; then
cat <<-END
***** ERROR DURING DOCBROKER STARTUP *****
********The docbroker start utility reported a non-zero status **********
END
exit 1
fi

#starting legal
echo "\n ************** starting legal *********** \n" >> $logfile
./dm_start_legal >>$logfile
status=$?
if [ ! $status = 0 ] ; then
cat <<-END
***** ERROR DURING LEGAL STARTUP *****
********The legal start utility reported a non-zero status **********
END
exit 1
fi



In the above code, the script gets hanged while executing the statement ps -ef|grep doc| grep -v '/apps/documentum/epic5.1/bin/sun4r5/adeptlmd -s180 -e /apps/documentum/epic5.1/'|grep -v grep|awk '{print $2}'| xargs kill -9

After this statement, the script is not executing any statement.

If i remove this line alone, the script is running without any problem.
But i have to kill all the processes that are hanged after the docbase has been shutdown. and then i have to start the docbase by calling another script which has been already written.


Can anyone please tell me why is my script get hanged at this statement.

Kindly please help me on how to resolve this probelm.

Thanks in advance.

Regards,
Sheethal
Reply With Quote
Forum Sponsor
  #2 (permalink)  
Old 10-10-2007
Registered User
 

Join Date: Jul 2006
Posts: 139
Quote:
ps -ef|grep doc| grep -v '/apps/documentum/epic5.1/bin/sun4r5/adeptlmd -s180 -e /apps/documentum/epic5.1/'|grep -v grep|awk '{print $2}'| xargs kill -9

escape the "/" with \

i.e..

use \/apps\/documentaion etc....
Reply With Quote
  #3 (permalink)  
Old 10-10-2007
Registered User
 

Join Date: Jul 2007
Posts: 15
Hi,

But if i execute this command ps -ef|grep doc| grep -v '/apps/documentum/epic5.1/bin/sun4r5/adeptlmd -s180 -e /apps/documentum/epic5.1/'|grep -v grep|awk '{print $2}'| xargs kill -9
individually i dont have any issues, only when i execute this command in the script it gets hanged that is after this statemnt no other statement is getting exectued.

can u please tell me why does it behaves like this........
Reply With Quote
  #4 (permalink)  
Old 10-10-2007
Registered User
 

Join Date: Jun 2007
Posts: 65
It seems the problem is with "xargs kill -9", the trailing end of the script. Better avoid using it and do as follows:
Code:
 kill -9 `ps -ef|grep doc| grep -v '...'|grep -v grep|awk '{print $2}'`
or else use "for" loop to get each process id and then do kill -9.

or else you can use this also, if you know the process name before hand
Code:
ps -ef  | awk '$0~/<process-name>/&&$0!~/awk/{print $2}' | xargs kill -9
Reply With Quote
  #5 (permalink)  
Old 10-10-2007
Registered User
 

Join Date: Jan 2007
Posts: 2,965
BTW, "kill -9" is a really awful thing to do, it doesn't give a process the opportunity to clear up, and "atexit()" callbacks don't run.

This can then leak semaphores, shared memory, leave AF_UNIX sockets lying around and generally be really unkind.
Reply With Quote
  #6 (permalink)  
Old 10-10-2007
Registered User
 

Join Date: Jul 2007
Posts: 15
Hi royalibrahim,

I tried your both solutions,

kill -9 `ps -ef|grep doc| grep -v '...'|grep -v grep|awk '{print $2}'`

and

ps -ef | awk '$0~/<process-name>/&&$0!~/awk/{print $2}' | xargs kill -9

But still the script is getting hanged, any statement after this statement is not executed even a echo statement is not getting exectued.

As you had said i believe the problem is while killing the process because when i give only the command
ps -ef|grep doc| grep -v '...'|grep -v grep|awk '{print $2}'

the script is getting executed without any problems.

But when i append the command kill -9 along with ps -ef | awk '$0~/<process-name>/&&$0!~/awk/{print $2}' then the script is getting hanged that is no statement is executed after this kill statement.

I dont have any clues about this issue and i am very new to Unix. kindly please help me on this.

Thanks in advance.
Reply With Quote
  #7 (permalink)  
Old 10-10-2007
Registered User
 

Join Date: Jun 2007
Posts: 65
Have you tried the "for" loop? for eg:

Code:
for pid in `ps -ef | grep doc |  grep -v '...' | grep -v grep | awk '{print $2}'` 
do
    echo $pid
    # kill -9 $pid
done
here replace '...' after the grep -v with your complete search string '/apps/doc...' and try to print the relevant process IDs. See whether u are able to print it. Then go with "kill" statement (that is why I commented it here). And also ensure the process ids to be killed should not belong to any daemons.

N.B: And also in the earlier command try altering the xargs kill -9 to xargs -i kill -9 {} 2> /dev/null and run it

Last edited by royalibrahim; 10-10-2007 at 07:41 AM.
Reply With Quote
Google UNIX.COM
Reply

Thread Tools
Display Modes




All times are GMT -7. The time now is 06:55 PM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008 The CEP Blog All Rights Reserved -Ad Management by RedTyger Visit The Global Fact Book

Content Relevant URLs by vBSEO 3.2.0