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 <chawkins@xxxxxxxxxxx> 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: chris.atlee@xxxxxxxxx [mailto:chris.atlee@xxxxxxxxx] On Behalf Of > Chris AtLee > Sent: Tuesday, August 28, 2007 2:08 PM > To: Anand Avati > Cc: Christopher Hawkins; gluster-devel@xxxxxxxxxx > Subject: Re: 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 <avati@xxxxxxxxxxxxx> wrote: > > committed the script under extras/init.d/glusterfsd. Thanks a bunch! > > > > avati > > > > 2007/8/3, Christopher Hawkins <chawkins@xxxxxxxxxxxxxxxxxxxx>: > > > > > > > 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 > > > > > > > > > > > > _______________________________________________ > > > Gluster-devel mailing list > > > Gluster-devel@xxxxxxxxxx > > > 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 > > Gluster-devel@xxxxxxxxxx > > http://lists.nongnu.org/mailman/listinfo/gluster-devel > > > >