1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
|
#! /bin/bash
### BEGIN INIT INFO
# Provides: hsqldb-server
# Required-Start: $syslog
# Required-Stop: $syslog
# Should-Start: $remote_fs
# Should-Stop: $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start HSQLDB database server
# Description: HSQLDB is an SQL relational database engine written in Java.
### END INIT INFO
PATH=/sbin:/bin:/usr/sbin:/usr/bin
test -f /usr/share/java/hsqldb.jar || exit 5
. /lib/lsb/init-functions
pidfile_name()
{
local servertype=$1
echo /var/run/hsqldb/${servertype}.pid
}
is_running()
{
local servertype=$1
local pidfile=$(pidfile_name $servertype)
if [ ! -f "$pidfile" ]; then
return 1
fi
local pid=$(cat "$pidfile")
if ! kill -0 "$pid" 2>/dev/null; then
return 1
fi
if [ ! -e /proc/"$pid"/exe ]; then
return 1
fi
return 0
}
is_configured()
{
local servertype=$1
if grep -E -q '^[[:blank:]]*server\.database' /etc/hsqldb/${servertype}.properties; then
return 0
else
return 1
fi
}
run_shutdown()
{
local servertype=$1
hsqldb-sqltool --rcfile /etc/hsqldb/sqltool.rc --sql "SHUTDOWN;" localhost-${servertype}-sa /dev/null
}
d_start()
{
local servertype=$1
local pidfile=$(pidfile_name $servertype)
local class
if [ $servertype = server ]; then
class=Server
else
class=WebServer
fi
mkdir -p $(dirname $pidfile) || return 1
chown hsqldb:hsqldb $(dirname $pidfile) || return 1
su - hsqldb -c "
cd /var/lib/hsqldb
umask 077
java -classpath /usr/share/java/hsqldb.jar org.hsqldb.${class} </dev/null > >(logger -t hsqldb -p local0.info >/dev/null 2>&1) 2>&1 &
umask 022
echo \$! >${pidfile}"
}
d_stop()
{
local servertype=$1
local pidfile=$(pidfile_name $servertype)
if is_running $servertype; then
run_shutdown $servertype
sleep 2
is_running $servertype && \
start-stop-daemon --stop --quiet --oknodo --pidfile $pidfile
fi
rm -f $pidfile
}
case "$1" in
start)
status=0
log_daemon_msg "Starting HSQLDB database server"
for type in server webserver; do
if is_running $type; then
log_progress_msg "$type"
elif is_configured $type; then
d_start $type && log_progress_msg "$type"
status=$(($status || $?))
fi
done
log_end_msg $status
;;
stop)
status=0
log_daemon_msg "Stopping HSQLDB database server"
for type in server webserver; do
d_stop $type && log_progress_msg "$type"
status=$(($status || $?))
done
log_end_msg $status
;;
status)
status=0
for type in server webserver; do
is_running
typestatus=$?
if [ $typestatus -eq 0 ]; then
log_success_msg "HSQLDB $type is running."
else
log_failure_msg "HSQLDB $type is not running."
fi
status=$(($status || $typestatus))
done
exit $((3 * $status))
;;
restart|force-reload)
status=0
log_daemon_msg "Restarting HSQLDB database server"
for type in server webserver; do
d_stop $type && sleep 1 && d_start $type
status=$(($status || $?))
log_progress_msg $type
done
log_end_msg $status
;;
try-restart)
if $0 status >/dev/null; then
$0 restart
else
exit 0
fi
;;
reload)
exit 3
;;
*)
log_failure_msg "Usage: $0 {start|stop|status|restart|try-restart|reload|force-reload}"
exit 2
;;
esac
|