分类: LINUX
2012-04-27 15:42:54
编写系统进程脚本应注意的问题:
第一: 不要让脚本名称中含有要监控的进程的名称,否则会造成误判,笔者就曾经因为这个问题造成脚本调试不成功,而浪费了很多时间.
第二: 引用变量的时候符号简单化如能用${variable_name},就不要用“$variable_name"
第三: 调试的时候,为了测试变量值的精确度就把所有的变量的值都用echo显示出来
第四: 对于条件测试,为了测试条件满足的情况下能否执行相关指令,可以用echo来显示
欢迎大家补充。。。。。。。。。。。。
使用示例:
#!/bin/bash
#Purpose:This script is used to montor process every 300 sec
#Scpritname: check_mail.sh
#Tips:run this script use this command "source rc.check_mail.sh &" or "./rc.check.mail.sh & "
##############################define variables##################################
process=postfix
process_port_number=:25
process_num=`ps -fe | grep "$process" |grep -v grep | wc -l`
process_port_num=`netstat -ano|grep "$process_port_number"|grep -v grep |wc -l`
time=`date +%y%m%d-%T`
#############################mian##############################################
while :
do
#time=`date +%y%m%d-%T`
echo "\$process_num is ${process_num},\$process_port_num is ${process_port_num}"
if [ "$process_num" -eq "0" ] && [ "$process_port_num" -eq "0" ];then
echo "${time} #### $process is not work, it will be restart" >> /var/log/mailpostfix.log
cd /tmp/
/etc/init.d/$process start
fi
sleep 300
done