[Gluster-devel] Init script
Christopher Hawkins
chawkins at veracitynetworks.com
Fri Aug 3 11:57:08 UTC 2007
> 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
More information about the Gluster-devel
mailing list