> Subject: Re: Updated debian patch > > > > Chris, > > any patches you would want us to apply to the codebase (init.d > > script?) which might make your life easier? > > Absolutly. A well maintained init.d script in the code base > would be fantastic, and then usable on any system, not just debian. > > > > Thanx Matt. Hi guys, Here's an init script I put together that should work on any system, though I have only tried it so far on Centos. It's self contained... doesn't use any init functions in the hope that it will portable across distro's. So far it's been good to me and I was going to post it anyway, so I guess now is the time! It's not fancy, doesn't check mounts or anything like that, but it seems to work well and reliably. PS - I am not a developer by any stretch of the imagination, so in the event that my scripting is ugly in the eyes of a real coder, have a laugh at my expense but please fix it and re-post. ;-) And thanks from all of us to the gluster team for all the great work. This is a fantastic project! #!/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