- 论坛徽章:
- 0
|
小弟找到一個用來監控MES系統相關服務的csh腳本,請問要把它改成b shell的腳本要怎樣改?
因為此csh腳本我若手工執行時,就完全OK,所有功能均可實現,但如果在crontab 里排程時,雖然也有執行,可以記錄log和發mail警告,
但卻不會啟動服務?
現想把它改成b shell來試一試, 但知道要如何來改?
比如 foreach SERVER 部分、以及下面while 那部分,C shell 和b shell有何區別,要如何來改?
請各位前輩指點指點,謝謝了!
原腳本如下:
#!/bin/csh -f
#souce /export/home/fwuser/.cshrc
setenv HOME /export/home/fwuser
set path = (/bin /usr/bin /usr/ucb /FactoryWorks/FASTech/FACTORYworks/bin
/FactoryWorks/FASTech/CELLworks/bin /FactoryWorks/FASTech/CELLworks/admins
/oracle/product/9.2.0/bin /usr/local/bin . /etc)
#--- CheckSrv
#---
#--- This script is used to check and make sure the number of Servers
#--- are running.
#--- If anyone is dead, mailbox will be closed and restart the server.
#--- File for LOGS
set LOG="/export/home/fwuser/scripts/ckmes.dead.log"
set Mail="/export/home/fwuser/scripts/ckmes.mail.log"
#--- Number of Servers expected
set WIPSRV_COUNT=1
set PRPSRV_COUNT=1
set MDLSRV_COUNT=1
set EQPSRV_COUNT=1
set OPRSRV_COUNT=1
set CATSRV_COUNT=2
set PCMBXSRV_COUNT=1
foreach SERVER (WIP PRP MDL EQP OPR CAT PCMBX)
switch ($SERVER)
case "WIP":
set SERVER_COUNT=$WIPSRV_COUNT
breaksw
case "PRP":
set SERVER_COUNT=$PRPSRV_COUNT
breaksw
case "MDL":
set SERVER_COUNT=$MDLSRV_COUNT
breaksw
case "EQP":
set SERVER_COUNT=$EQPSRV_COUNT
breaksw
case "OPR":
set SERVER_COUNT=$OPRSRV_COUNT
breaksw
case "CAT":
set SERVER_COUNT=$CATSRV_COUNT
breaksw
case "PCMBX":
set SERVER_COUNT=$PCMBXSRV_COUNT
breaksw
endsw
@ COUNT = 1
while ( $COUNT <= $SERVER_COUNT )
set SERVER_NAME=$SERVER"srv."$COUNT
set PS_COUNT=`ps -ef | grep -v grep | grep -c $SERVER_NAME`
if ((( $SERVER == "PCMBX" ) && ( $PS_COUNT != "2" )) || (( $SERVER != "PCMBX" )
&& ( $PS_COUNT != "1" ))) then
# echo "`date '+%Y/%m/%d %H:%M:%S'` :- $SERVER_NAME is dead." > /dev/pts/22
echo "`date '+%Y/%m/%d %H:%M:%S'` :- $SERVER_NAME is dead." > $Mail
echo "`date '+%Y/%m/%d %H:%M:%S'` :- $SERVER_NAME is dead." >> $LOG
mailx -s "Warning, $SERVER_NAME on Fwdev is dead,Pls Check it." mis2838@gtbf-ltd.com < $Mail
CWtrace -n $FWTRACE "Restarting $SERVER_NAME......" >& /dev/null
mbx_close -n $FWMBX $SERVER_NAME >& /dev/null
if ( $SERVER == "WIP") then
"$SERVER"srv "set name=$SERVER_NAME" "set mbx=$FWMBX" "set dbuser=$FWDBUSER"
"set dbpassword=$FWDBPASS" "set dispatch=available" >& /dev/null &
else
"$SERVER"srv "set name=$SERVER_NAME" "set mbx=$FWMBX" "set dbuser=$FWDBUSER"
"set dbpassword=$FWDBPASS" >& /dev/null &
endif
endif
@ COUNT = $COUNT + 1
end
#foreach SERVER
end
|
[ 本帖最后由 suny628 于 2009-5-7 18:13 编辑 ] |
|