$ svcs -a grep sendmail
*online Mar_09 svc:/network/smtp:sendmail
#==find the process id of the offending process
$svcs -p sendmail
STATE STIME FMRI
*online Mar_09 svc:/network/smtp:sendmail
Mar_09 309 sendmail
Mar_09 310 sendmail
#==Then kill with kill cmd
#==If it happens quite offen, You may find the following script handy.
#!/bin/ksh
SVCNAMES=$@
CNT=0
DELAY=5
#
getpid () {
SVC=$1
/usr/bin/svcs $SVC >/dev/null
if [ $? -ne 0 ];then
PID=0
return 1
fi
PID=`/usr/bin/svcs -Hp $SVC|tail +2 | awk '{print $2}'| tail -1`
if [ -z "$PID" ];then
PID=1
fi
return 0
}
[ -z $SVCNAMES ] && echo "Usage $0 svcname1 [svcname2] .."
for SVCNAME in $SVCNAMES
do
getpid $SVCNAME
if [ $PID -lt 1 ];then
echo "No pid found for $SVCNAME"
exit 1
fi
while [ $PID -gt 1 ]
do
echo "Delay for " $DELAY " secs"
sleep $DELAY;
getpid $SVCNAME
CNT=`expr $CNT + 1 `
if [ $CNT -le 7 ] && [ $PID -gt 1 ];then
echo "Service $SVCNAME is still running after " `expr $CNT \* $DELAY ` "secs, Gracefully kill it: kill $PID"
kill $PID
elif [ $CNT -gt 7 ] && [ $PID -gt 1 ];then
echo "Service $SVCNAME is still running after " `expr $CNT \* $DELAY ` "secs, Forcefully kill it: kill -9 $PID"
kill -9 $PID
fi
done
sleep 2;
/usr/bin/svcs $SVCNAME | grep disabled
if [ $? -eq 0 ]; then
echo "Service is stopped"
else
echo "Service is till running, please kill it mannually"
exit 1
fi
done
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.