1. #!/bin/sh  
  2.  
  3. umask 022  
  4.  
  5. CAT=/bin/cat  
  6. KILL=/bin/kill  
  7.  
  8. SU_USER=zabbix  
  9.  
  10. # zabbix script  
  11. ZABBIX_SERVER=/usr/local/sbin/zabbix_server  
  12. ZABBIX_AGENTD=/usr/local/sbin/zabbix_agentd  
  13.  
  14. # pid file  
  15. ZS_PID=/tmp/zabbix_server.pid  
  16. ZA_PID=/tmp/zabbix_agentd.pid  
  17.  
  18. start_agentd() {  
  19. if [ -e $ZA_PID ]; then 
  20.         echo "$ZABBIX_AGENTD is running!" 
  21.         exit  
  22.     else 
  23.         echo -n "starting $ZABBIX_AGENTD..." 
  24.         su ${SU_USER} -c ${ZABBIX_AGENTD}  
  25.         sleep 3  
  26.         if [ -e $ZA_PID ]; then 
  27.             echo "done" 
  28.         else 
  29.             echo "false, please check log file!" 
  30.         fi  
  31.     fi    
  32. }  
  33.  
  34. start_server() {  
  35.     if [ -e $ZS_PID ]; then 
  36.         echo "$ZABBIX_SERVER is running!" 
  37.         exit  
  38.     else 
  39.         echo -n "starting $ZABBIX_SERVER..."   
  40.         su ${SU_USER} -c ${ZABBIX_SERVER}  
  41.         sleep 3  
  42.         if [ -e $ZS_PID ]; then 
  43.             echo "done" 
  44.         else 
  45.             echo "false, please check log file!" 
  46.         fi  
  47.     fi    
  48. }  
  49.  
  50. stop_agentd() {  
  51.     if [  -r $ZA_PID  -a  ! -z ${ZA_PID}  ]; then 
  52.         PID=`${CAT} ${ZA_PID}`  
  53.     fi  
  54.     if [  ${PID:=0} -gt 1 -a  ! "X$PID" = "X "  ]; then 
  55.         ${KILL} ${PID} && echo "stop $ZABBIX_AGENTD... done" 
  56.     else 
  57.         echo "stop $ZABBIX_AGENTD fail, Unable to read PID file $ZA_PID" 
  58.     fi  
  59. }  
  60.  
  61. stop_server() {  
  62.     if [  -r $ZS_PID  -a  ! -z ${ZS_PID}  ]; then 
  63.         PID=`${CAT} ${ZS_PID}`  
  64.     fi  
  65.     if [  ${PID:=0} -gt 1 -a  ! "X$PID" = "X "  ]; then 
  66.         ${KILL} ${PID} && echo "stop $ZABBIX_SERVER... done" 
  67.     else 
  68.         echo "stop $ZABBIX_SERVER fail, Unable to read PID file $ZS_PID" 
  69.     fi  
  70. }  
  71.  
  72. usage="usage $0 {agent|server} {start|stop|restart}" 
  73.  
  74.  
  75. case $1 in 
  76.  'agentd')  
  77.     t='agentd' 
  78.  ;;  
  79.  'server')  
  80.     t='server' 
  81.  ;;  
  82. esac  
  83.  
  84. if [ ! -z $t ]; then 
  85.     case $2 in 
  86.         'start')  
  87.             start_$t  
  88.         ;;  
  89.  
  90.         'stop')  
  91.             stop_$t  
  92.         ;;  
  93.  
  94.         'restart')  
  95.             stop_$t  
  96.             sleep 3 && \  
  97.             start_$t  
  98.         ;;  
  99.  
  100.         *)  
  101.             echo $usage  
  102.         ;;  
  103.     esac  
  104. else 
  105.   echo $usage  
  106. fi  

 

 

脚本在freebsd下测试通过,其他版本未测试。