summaryrefslogtreecommitdiffstats
path: root/misc/init.d/redhat/zabbix_server_ctl
blob: 52a2a68518dfd8e0be8816dfd692f5d78e519123 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#!/bin/sh
#
# zabbix_server_ctl 
#
# control script to stop/start/restart zabbix_server
# author: charlie collins
# date: 01.21.2002
#
# revised 09.21.2003
# (setup for Red Hat 7.3 with Zabbix 1.0 beta)
# (should work for other Red Hat and Sys V style init machines as well)
#
# (modeled after apache style control scripts)
# (this script can be placed in init.d and respective runlevel for startup usage)
# 
#
# The exit codes returned are:
#	0 - operation completed successfully
#	1 - 
#	2 - usage error
#	3 - zabbix_server could not be started
#	4 - zabbix_server could not be stopped
#	5 - zabbix_server could not be started during a restart
#	6 - zabbix_server could not be restarted during a restart
#
#
#

# **************
# config options
# **************
#
# (set config options to match your system settings) 

# base zabbix dir
BASEDIR=/opt/zabbix
# PID file
PIDFILE=/var/tmp/zabbix_server.pid
# binary file
ZABBIX_SUCKERD=$BASEDIR/bin/zabbix_server


# **************
# logic section (below here) does NOT normally need any modification
# **************

# establish args
ERROR=0
ARGV="$@"
if [ "x$ARGV" = "x" ] ; then 
    ARGS="help"
fi


# perform action based on args
for ARG in $@ $ARGS
do
	# check if PIDFILE exists and ensure is not zero size and react accordingly
	if [ -f $PIDFILE  ] && [ -s $PIDFILE ] ; then
	    PID=`cat $PIDFILE`
		if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then
	        STATUS="zabbix_server (pid $PID) running"
	        RUNNING=1			
	    else
	        STATUS="zabbix_server (pid $PID?) not running"
	        RUNNING=0			
	    fi
    else
	    STATUS="zabbix_server (no pid file) not running"
	    RUNNING=0		
    fi
	
	# parse arg and react accordingly
    case $ARG in
    
	start)
	if [ $RUNNING -eq 1 ]; then
	    echo "$0 $ARG: zabbix_server (pid $PID) already running"
	    continue
	fi
	if $ZABBIX_SUCKERD ; then
	    echo "$0 $ARG: zabbix_server started"
	else
	    echo "$0 $ARG: zabbix_server could not be started"
	    ERROR=3
	fi
	;;
    
	stop)
	if [ $RUNNING -eq 0 ]; then
	    echo "stop called - in running eq 0"
		echo "$0 $ARG: $STATUS"
	    continue
	fi
	if kill $PID ; then
			echo "$0 $ARG: zabbix_server process(es) stopped"
	    else
	        echo "$0 $ARG: zabbix_server process(es) could not be stopped"
	        ERROR=4
	    fi
	;;
    
	restart)
	if [ $RUNNING -eq 0 ]; then
	    echo "$0 $ARG: zabbix_server not running, trying to start"
	    if $ZABBIX_SUCKERD ; then
		    echo "$0 $ARG: zabbix_server started"
	    else
		    echo "$0 $ARG: zabbix_server could not be started"
			ERROR=5
	    fi
	else
	    if kill $PID ; then
		    if $ZABBIX_SUCKERD ; then
	            echo "$0 $ARG: zabbix_server restarted"
			else
				echo "$0 $ARG: zabbix_server could not be started"
				ERROR=3
			fi
		else
		    echo "$0 $ARG: zabbix_server could not be restarted"
		    ERROR=6
		fi	    
    fi		
	;;
    
	*)             
	
	echo "usage: $0 (start|stop|restart|help)"
	cat <<EOF

start      - start zabbix_server
stop       - stop zabbix_server
restart    - restart zabbix_server if running by sending a SIGHUP or start if not running
help       - this screen

EOF

    ERROR=2
    ;;

    esac

done

exit $ERROR