I'm trying to start Hudson on Ubuntu automatically on boot with an init.d script. The script works fine when invoked manually (ie with ./hudson start), and has update-rc.d-generated sym-links in rc2-rc5, but it doesn't start on rebooting. Does anyone know what might be causing it to not work? The script is as follows (the hudson.log logfile is created at boot, but doesn't contain any output):
#!/bin/sh
### BEGIN INIT INFO
# Provides: hudson
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start Hudson at boot
# Description: Start the Hudson CI server at boot
### END INIT INFO
CTL=/home/jcss-dev/hudson.war
LOGFILE=/home/jcss-dev/hudson.log
case "$1" in
start)
pid=`/bin/ps -Af | /bin/grep "hudson.war" | /bin/grep -v /bin/grep | /usr/bin/awk '{print $2}'`
if [ "$pid" = "" ]; then
echo -n "Starting Hudson... "
su - the-user-account-name -c "/usr/bin/java -jar $CTL > $LOGFILE 2>&1 &"
else
echo -n "Hudson is already running"
fi
;;
stop)
pid=`/bin/ps -Af | /bin/grep "hudson.war" | /bin/grep -v /bin/grep | /usr/bin/awk '{print $2}'`
if [ "$pid" != "" ]; then
echo -n "Stopping Hudson... "
kill -9 $pid
else
echo "Hudson is not running"
fi
;;
status)
pid=`/bin/ps -Af | /bin/grep "hudson.war" | /bin/grep -v /bin/grep | /usr/bin/awk '{print $2}'`
if [ "$pid" != "" ]; then
echo -n "Hudson is running"
else
echo -n "Hudson is not running"
fi
;;
*)
echo "Usage $0 start|stop|status"
exit 1
;;
esac
exit 0