先上/etc/init.d/下的glusterd的服务脚本,分析慢慢写。

该文件来自于CentOS中glusterfs官方包。

{% highlight bash %}

!/bin/bash

glusterd Startup script for the glusterfs server

chkconfig: - 20 80

description: Clustered file-system server

BEGIN INIT INFO

Provides: glusterd

Required-Start: $local_fs $network

Required-Stop: $local_fs $network

Should-Start:

Should-Stop:

Default-Start:

Default-Stop: 0 1 2 3 4 5 6

Short-Description: glusterfs server

Description: Clustered file-system server

END INIT INFO

Source function library.

. /etc/rc.d/init.d/functions

BASE=glusterd

Fedora File System Layout dictates /run

[ -e /run ] && RUNDIR="/run"
PIDFILE="${RUNDIR:-/var/run}/${BASE}.pid"

PID=test -f $PIDFILE && cat $PIDFILE

Overwriteable from sysconfig

LOG_LEVEL=''
LOG_FILE=''
GLUSTERD_OPTIONS=''
GLUSTERD_NOFILE='65536'

[ -f /etc/sysconfig/${BASE} ] && . /etc/sysconfig/${BASE}

[ ! -z $LOG_LEVEL ] && GLUSTERD_OPTIONS="${GLUSTERD_OPTIONS} --log-level ${LOG_LEVEL}"
[ ! -z $LOG_FILE ] && GLUSTERD_OPTIONS="${GLUSTERD_OPTIONS} --log-file ${LOG_FILE}"

GLUSTERFSD=glusterfsd
GLUSTERFS=glusterfs
GLUSTERD_BIN=/usr/sbin/$BASE
GLUSTERD_OPTS="--pid-file=$PIDFILE ${GLUSTERD_OPTIONS}"
GLUSTERD="$GLUSTERD_BIN $GLUSTERD_OPTS"
RETVAL=0

LOCKFILE=/var/lock/subsys/${BASE}

Start the service $BASE

start()
{
if pidofproc -p $PIDFILE $GLUSTERD_BIN &> /dev/null; then
echo "glusterd service is already running with pid $PID"
return 0
else
ulimit -n $GLUSTERD_NOFILE
echo -n $"Starting $BASE:"
daemon $GLUSTERD
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $LOCKFILE
return $RETVAL
fi
}

Stop the service $BASE

stop()
{
echo -n $"Stopping $BASE:"
if pidofproc -p $PIDFILE $GLUSTERD_BIN &> /dev/null; then
killproc -p $PIDFILE $BASE
[ -w $PIDFILE ] && rm -f $PIDFILE
else
killproc $BASE
fi
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $LOCKFILE
return $RETVAL
}

restart()
{
stop
start
}

reload()
{
restart
}

force_reload()
{
restart
}

rh_status()
{
status $BASE
}

rh_status_q()
{
rh_status &>/dev/null
}

service arguments

case $1 in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 1
esac

exit $?
{% endhighlight %}

-EOF-

Comments
Write a Comment