diff options
Diffstat (limited to 'extras/init.d')
-rw-r--r-- | extras/init.d/Makefile.am | 9 | ||||
-rwxr-xr-x | extras/init.d/glusterfs-server | 100 | ||||
-rw-r--r-- | extras/init.d/glusterfs-server.plist.in | 15 | ||||
-rwxr-xr-x | extras/init.d/glusterfsd | 110 |
4 files changed, 234 insertions, 0 deletions
diff --git a/extras/init.d/Makefile.am b/extras/init.d/Makefile.am new file mode 100644 index 00000000000..608b5bb2d4d --- /dev/null +++ b/extras/init.d/Makefile.am @@ -0,0 +1,9 @@ + +EXTRA_DIST = glusterfsd glusterfs-server glusterfs-server.plist + +CLEANFILES = + +install-data-am: +if GF_DARWIN_HOST_OS + cp glusterfs-server.plist /Library/LaunchDaemons/com.zresearch.glusterfs.plist +endif diff --git a/extras/init.d/glusterfs-server b/extras/init.d/glusterfs-server new file mode 100755 index 00000000000..975283982b2 --- /dev/null +++ b/extras/init.d/glusterfs-server @@ -0,0 +1,100 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: glusterfsd +# Required-Start: $local_fs $network +# Required-Stop: $local_fs $network +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: gluster server +# Description: This file starts / stops the gluster server +### END INIT INFO + +# Author: Chris AtLee <chris@atlee.ca> +# Patched by: Matthias Albert < matthias@linux4experts.de> + +PATH=/sbin:/usr/sbin:/bin:/usr/bin +NAME=glusterfsd +SCRIPTNAME=/etc/init.d/$NAME +DAEMON=/usr/sbin/$NAME +PIDFILE=/var/run/$NAME.pid +CONFIGFILE=/etc/glusterfs/server.vol +GLUSTERFS_OPTS="-f $CONFIGFILE" +PID=`test -f $PIDFILE && cat $PIDFILE` + + +# Gracefully exit if the package has been removed. +test -x $DAEMON || exit 0 + +# Load the VERBOSE setting and other rcS variables +. /lib/init/vars.sh + +# Define LSB log_* functions. +. /lib/lsb/init-functions + +check_config() +{ + if [ ! -f "$CONFIGFILE" ]; then + echo "Config file $CONFIGFILE is missing...exiting!" + exit 0 + fi +} + +do_start() +{ + check_config; + pidofproc -p $PIDFILE $DAEMON >/dev/null + status=$? + if [ $status -eq 0 ]; then + log_success_msg "glusterfs server is already running with pid $PID" + else + log_daemon_msg "Starting glusterfs server" "glusterfsd" + start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --startas $DAEMON -- -p $PIDFILE $GLUSTERFS_OPTS + log_end_msg $? + start_daemon -p $PIDFILE $DAEMON -f $CONFIGFILE + return $? + fi +} + +do_stop() +{ + log_daemon_msg "Stopping glusterfs server" "glusterfsd" + start-stop-daemon --stop --quiet --oknodo --pidfile $PIDFILE + log_end_msg $? + rm -f $PIDFILE + killproc -p $PIDFILE $DAEMON + return $? +} + +do_status() +{ + pidofproc -p $PIDFILE $DAEMON >/dev/null + status=$? + if [ $status -eq 0 ]; then + log_success_msg "glusterfs server is running with pid $PID" + else + log_failure_msg "glusterfs server is not running." + fi + exit $status +} + +case "$1" in + start) + do_start + ;; + stop) + do_stop + ;; + status) + do_status; + ;; + restart|force-reload) + do_stop + sleep 2 + do_start + ;; + *) + echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 + exit 3 + ;; +esac + diff --git a/extras/init.d/glusterfs-server.plist.in b/extras/init.d/glusterfs-server.plist.in new file mode 100644 index 00000000000..4d2287c5759 --- /dev/null +++ b/extras/init.d/glusterfs-server.plist.in @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> +<plist version="1.0"> +<dict> + <key>Label</key> + <string>com.zresearch.glusterfs</string> + <key>ProgramArguments</key> + <array> + <string>@prefix@/sbin/glusterfsd</string> + <string>-N</string> + <string>-f</string> + <string>@prefix@/etc/glusterfs/server.vol</string> + </array> +</dict> +</plist> diff --git a/extras/init.d/glusterfsd b/extras/init.d/glusterfsd new file mode 100755 index 00000000000..866a0010e9a --- /dev/null +++ b/extras/init.d/glusterfsd @@ -0,0 +1,110 @@ +#!/bin/bash +# +# chkconfig: 35 90 12 +# description: Glusterfsd server +# + +# Get function from functions library +# . /etc/rc.d/init.d/functions + +BASE=glusterfsd +GSERVER="/sbin/$BASE -f /etc/glusterfs/glusterfs-server.vol" + +# A function to stop gluster +killgluster() +{ + killlevel="-9" + # Find pid. + pid= + if [ -f /var/run/$BASE.pid ]; then + local line p + read line < /var/run/$BASE.pid + for p in $line ; do + [ -z "${p//[0-9]/}" -a -d "/proc/$p" ] && pid="$pid +$p" + done + fi + if [ -z "$pid" ]; then + pid=`pidof -o $$ -o $PPID -o %PPID -x $1 || \ + pidof -o $$ -o $PPID -o %PPID -x $BASE` + fi + # Kill it. + kill $killlevel $pid + if [ "$?" = 0 ] + then + echo "Gluster process $pid has been killed" + initlog -n "Kill gluster" -e 1 + else + echo "Failed: Gluster process $pid has not been killed" + initlog -n "Kill gluster" -e 2 + fi + + # Remove pid and lock file if any. + if [ -f /var/run/$BASE.pid ] + then + rm -f /var/run/$BASE.pid && initlog -n "Remove $BASE.pid:" -e +1 + else echo "$BASE.pid not found" && initlog -n "Remove +$BASE.pid:" -e 2 + fi + + if [ -f /var/lock/subsys/$BASE ] + then + rm -f /var/lock/subsys/$BASE && initlog -n "Remove $BASE lock +file:" -e 1 + else echo "$BASE lock file not found" && initlog -n "Remove +$BASE lock file:" -e 2 + fi +} + +# Start the service $BASE +start() +{ + initlog -c "echo -n Starting $BASE:" + $GSERVER + if [ $? = 0 ] + then + touch /var/lock/subsys/$BASE + initlog -n "Starting $BASE" -e 1 + echo " [OK]" + else + echo "$BASE start failed." + initlog -n "$BASE start" -e 2 + fi +} + +# Stop the service $BASE +stop() +{ + echo "Stopping $BASE:" + killgluster +} +status() +{ + if test "`lsof |grep -c /sbin/$BASE`" = "0" + then echo "$BASE is stopped." + else echo "$BASE is running..." + fi +} + +### service arguments ### +case $1 in + start) + start + ;; + stop) + stop + ;; + status) + status + ;; + restart|reload|condrestart) + stop + start + ;; + *) + echo $.Usage: $0 {start|stop|restart|reload|status}. + exit 1 +esac + +exit 0 |