Created
January 20, 2014 03:25
-
-
Save kevinbin/8514399 to your computer and use it in GitHub Desktop.
MySQL Cluster ndb_mgmd process init start script
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# chkconfig: 345 99 30 | |
# description: ndb_mgmd start/stop script | |
### BEGIN INIT INFO | |
# Provides: ndb_mgmd start/stop | |
# Required-Start: $local_fs $network $remote_fs | |
# Required-Stop: $local_fs $network $remote_fs | |
# Default-Start: 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: ndb_mgmd start/stop script | |
### END INIT INFO | |
NODEID=1 | |
basename=`basename $0` | |
LOG=/var/log/ndb_mgmd_start.log | |
CONFIGINI=<%=data_dir%>/config.ini | |
SBINDIR=<%=mysql_basedir%>/bin | |
PIDFILE=<%=data_dir%>/mgm_data/ndb_$NODEID.pid | |
TEE="/usr/bin/tee -a $LOG" | |
DATE=`date "+%Y-%m-%d %H:%M:%S"` | |
OPTIONS=" --ndb-nodeid=${NODEID} --config-file=$CONFIGINI --reload --config-cache=0" | |
PROGNAME="ndb_mgmd" | |
STARTNDBD="$SBINDIR/$PROGNAME $OPTIONS" | |
LOCKFILE="" | |
if [ -d /var/lock/subsys ]; then | |
LOCKFILE=/var/lock/subsys/$basename | |
else | |
LOCKFILE=/var/lock/$basename | |
fi | |
if [ -e /etc/init.d/functions ]; then | |
. /etc/init.d/functions | |
else | |
. /lib/lsb/init-functions | |
fi | |
if [ ! -f $SBINDIR/$PROGNAME ]; then | |
echo -e "$PROGNAME executable not found in $SBINDIR"|$TEE | |
exit 1 | |
fi | |
RETVAL=0 | |
start() { | |
echo -e "$DATE: Starting $PROGNAME $OPTIONS !" |$TEE | |
PID=`pgrep -f "$PROGNAME.+ndb-nodeid=$NODEID"` | |
if [ -n "$PID" ]; then | |
echo -e "$PROGNAME is already running with pid $PID\n" |$TEE | |
return 0 | |
else | |
$STARTNDBD $OPTIONS|$TEE | |
RETVAL=$? | |
[ $RETVAL -eq 0 ] && /bin/touch $LOCKFILE | |
sleep 3 | |
PID=`pgrep -f "$PROGNAME.+ndb-nodeid=$NODEID"` | |
if [ "$PID" ]; then | |
echo -e "OK: Success to start $PROGNAME \n" | $TEE | |
return 0 | |
else | |
echo -e "Error: Failed to start $PROGNAME \n" | $TEE | |
return 1 | |
fi | |
fi | |
} | |
stop() { | |
echo -e "$DATE: Stopping $PROGNAME : "|$TEE | |
PID=`pgrep -f "$PROGNAME.+ndb-nodeid=$NODEID"` | |
if [ -n "$PID" ]; then | |
pkill -15 -f "$PROGNAME.+ndb-nodeid=$NODEID" | |
else | |
`rm -f ${PIDFILE}` | |
`rm -f ${LOCKFILE}` | |
echo -e "Error: Failed $PROGNAME not running !\n" | $TEE | |
return 1 | |
fi | |
i=1 | |
while [ `pgrep -f "$PROGNAME.+ndb-nodeid=$NODEID"` ]; | |
do | |
if [ $i -eq 60 ]; then | |
echo -e "giving up after 60 secods\n"| $TEE | |
return 0 | |
fi | |
i=`expr $i + 1` | |
sleep 1 | |
done | |
PID=`pgrep '$PROGNAME'` | |
if [ -n "$PID" ]; then | |
echo -e "Error: Failed $PROGNAME not running\n" | $TEE | |
return 1 | |
else | |
`rm -f ${PIDFILE}` | |
echo -e "OK: Success to stop $PROGNAME\n" | $TEE | |
return 0 | |
fi | |
} | |
case $1 in | |
start) | |
start | |
RETVAL=$? | |
;; | |
stop) | |
stop | |
RETVAL=$? | |
;; | |
status) | |
status -p $PIDFILE $PROGNAME | |
RETVAL=$? | |
;; | |
restart) | |
stop | |
start | |
RETVAL=$? | |
;; | |
*) | |
echo "Usage: $basename {start|stop|restart|status}" | |
exit 1 | |
;; | |
esac | |
exit $RETVAL |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment