gluster-devel
[Top][All Lists]
Advanced

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

RE: [Gluster-devel] Init script


From: Christopher Hawkins
Subject: RE: [Gluster-devel] Init script
Date: Tue, 28 Aug 2007 15:22:26 -0400

cat /etc/redhat-release
CentOS release 4.5 (Final)

Yeah, no /lib/lsb on this one. Ahhh, I see it in yum, though. So it is
available, but not installed. What a PITA.   :-0  

Sadly, I think different scripts per distro would be best. You are correct
about debian's default files and redhat's sysconfig dir. Though many init
scripts check for all that, just as many don't... But hey, at least we now
have RHEL and Debian covered. 

-----Original Message-----
From: address@hidden [mailto:address@hidden On Behalf Of
Chris AtLee
Sent: Tuesday, August 28, 2007 2:53 PM
To: Christopher Hawkins
Cc: address@hidden
Subject: Re: [Gluster-devel] Init script

Weird, which version of RHEL?  My RHEL4/5 machines have it (the
redhat-lsb package).

Maybe we need separate scripts per distribution anyway?  Many debian
scripts of this sort have a corresponding file in /etc/default that
would indicate if the program was configured and allow you to specify
non-default command line arguments without editing the init.d script.
shorewall for example uses a variable in /etc/default/shorewall to
prevent it from starting up with the default configuration.

RedHat seems to prefer files in /etc/sysconfig for this sort of thing?

On 8/28/07, Christopher Hawkins <address@hidden> wrote:
> Hm. <scratching head> RHEL / Centos doesn't have
/lib/lsb/init-functions...
> It has /etc/init.d/functions, but the functions are all different anyway.
>
> Could modify the original script to test for /etc/debian_version file and
if
> found, use the "logger" command instead of initlog. Or I suppose the dev
> team (does the installation routine already already test to figure out
what
> distro is running?) could just have the install script install one or the
> other based on distro, but then you have two scripts to maintain. What do
> you think? Also, what issues do you have with the way kill is implemented?
I
> ask because I would like to fix that too, if possible, so I can use this
> script on all my boxes.
>
> Chris
>
> -----Original Message-----
> From: address@hidden [mailto:address@hidden On Behalf Of
> Chris AtLee
> Sent: Tuesday, August 28, 2007 2:08 PM
> To: Anand Avati
> Cc: Christopher Hawkins; address@hidden
> Subject: Re: [Gluster-devel] Init script
>
> On my (debian) system, the 'initlog' command doesn't exist, so this
> script prints out a lot of errors, and there are some issues with how
> 'kill' works.
>
> init.d scripts are pretty hard to get working across multiple
> distributions.  The best way I know of is to only rely on commands in
> /lib/lsb/init-functions.
>
> The attached script runs cleanly on my system.
>
> On 8/7/07, Anand Avati <address@hidden> wrote:
> > committed the script under extras/init.d/glusterfsd. Thanks a bunch!
> >
> > avati
> >
> > 2007/8/3, Christopher Hawkins <address@hidden>:
> > >
> > > > 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
> > >
> > >
> > >
> > > _______________________________________________
> > > Gluster-devel mailing list
> > > address@hidden
> > > http://lists.nongnu.org/mailman/listinfo/gluster-devel
> > >
> >
> >
> >
> > --
> > It always takes longer than you expect, even when you take into account
> > Hofstadter's Law.
> >
> > -- Hofstadter's Law
> > _______________________________________________
> > Gluster-devel mailing list
> > address@hidden
> > http://lists.nongnu.org/mailman/listinfo/gluster-devel
> >
>
>





reply via email to

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