gluster-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gluster-devel] Init script


From: Christopher Hawkins
Subject: [Gluster-devel] Init script
Date: Fri, 3 Aug 2007 07:57:08 -0400

> Subject: Re: [Gluster-devel] 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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]