7 # ---------------------------------------------------------------------------
8 # Make sure we're running as the correct user
9 # ---------------------------------------------------------------------------
10 [ $(whoami) != 'opensrf' ] && echo 'Must run as user "opensrf"' && exit;
15 echo "usage: $0 [OPTION]... -c <c_config> -a <action>";
17 echo "Mandatory parameters:";
18 echo -e " -a\t\taction to perform";
20 echo "Optional parameters:";
21 echo -e " -c\t\tfull path to C configuration file (opensrf_core.xml)";
22 echo -e " -d\t\tstore PID files in this directory";
23 echo -e " -l\t\taccept 'localhost' as the fully-qualified domain name";
25 echo "Actions include:";
26 echo -e "\tstart_router"
27 echo -e "\tstop_router"
28 echo -e "\trestart_router"
29 echo -e "\tstart_perl"
31 echo -e "\trestart_perl"
35 echo -e "\tstart_osrf"
37 echo -e "\trestart_osrf"
40 echo -e "\trestart_all"
43 echo " $0 -a restart_all";
44 echo " $0 -l -c opensrf_core.xml -a restart_all";
49 # Get root directory of this script
56 if [ -z "$BASEDIR" ] && [ -n "$p" ]; then
66 # ---------------------------------------------------------------------------
67 # Load the command line options and set the global vars
68 # ---------------------------------------------------------------------------
69 while getopts "a:d:clh" flag; do
71 "a") OPT_ACTION="$OPTARG";;
72 "c") OPT_CONFIG="$OPTARG";;
73 "d") OPT_PID_DIR="$OPTARG";;
74 "l") export OSRF_HOSTNAME="localhost";;
79 [ -z "$OPT_CONFIG" ] && OPT_CONFIG="$BASEDIR/conf/opensrf_core.xml";
80 [ -z "$OPT_PID_DIR" ] && OPT_PID_DIR=/tmp;
81 [ -z "$OPT_ACTION" ] && usage;
83 PID_ROUTER="$OPT_PID_DIR/router.pid";
84 PID_OSRF_PERL="$OPT_PID_DIR/osrf_perl.pid";
85 PID_OSRF_C="$OPT_PID_DIR/osrf_c.pid";
88 # ---------------------------------------------------------------------------
89 # Utility code for checking the PID files
90 # ---------------------------------------------------------------------------
97 if [ $action == "start" ]; then
99 if [ -e $pidfile ]; then
101 echo "$item already started : $pid";
104 echo "Starting $item";
107 if [ $action == "stop" ]; then
109 if [ ! -e $pidfile ]; then
110 echo "$item not running";
115 echo "Stopping $item : $pid";
116 kill -s INT $pid 2> /dev/null;
118 kill -9 $pid 2> /dev/null;
127 # ---------------------------------------------------------------------------
128 # Start / Stop functions
129 # ---------------------------------------------------------------------------
132 function start_router {
133 do_action "start" $PID_ROUTER "OpenSRF Router";
134 opensrf_router $OPT_CONFIG router
135 pid=$(ps ax | grep "OpenSRF Router" | grep -v grep | awk '{print $1}')
136 echo $pid > $PID_ROUTER;
140 function stop_router {
141 do_action "stop" $PID_ROUTER "OpenSRF Router";
145 function start_perl {
146 do_action "start" $PID_OSRF_PERL "OpenSRF Perl";
147 perl -MOpenSRF::System="$OPT_CONFIG" -e 'OpenSRF::System->bootstrap()' &
149 pid=$(ps ax | grep "OpenSRF System" | grep -v grep | grep -v "System-C"| awk '{print $1}')
150 echo $pid > $PID_OSRF_PERL;
155 do_action "stop" $PID_OSRF_PERL "OpenSRF Perl";
162 if [ "_$host" == "_" ]; then
163 host=$(perl -MNet::Domain=hostfqdn -e 'print hostfqdn()');
166 do_action "start" $PID_OSRF_C "OpenSRF C (host=$host)";
167 opensrf-c $host $OPT_CONFIG opensrf;
168 pid=$(ps ax | grep "OpenSRF System-C" | grep -v grep | awk '{print $1}')
169 echo $pid > "$PID_OSRF_C";
174 do_action "stop" $PID_OSRF_C "OpenSRF C";
175 killall -9 opensrf-c # hack for now to force kill all C services
182 # ---------------------------------------------------------------------------
183 # Do the requested action
184 # ---------------------------------------------------------------------------
186 "start_router") start_router;;
187 "stop_router") stop_router;;
188 "restart_router") stop_router; start_router;;
189 "start_perl") start_perl;;
190 "stop_perl") stop_perl;;
191 "restart_perl") stop_perl; start_perl;;
194 "restart_c") stop_c; start_c;;
195 "start_osrf") start_perl; start_c;;
196 "stop_osrf") stop_perl; stop_c;;
197 "restart_osrf") stop_perl; stop_c; start_perl; start_c;;
198 "stop_all") stop_c; stop_perl; stop_router;;
199 "start_all") start_router; start_perl; start_c;;
200 "restart_all") stop_c; stop_perl; stop_router; start_router; start_perl; start_c;;