File: hsqldb-server.init

package info (click to toggle)
hsqldb 1.8.0.7-1etch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 11,824 kB
  • ctags: 11,226
  • sloc: java: 71,953; xml: 10,832; sql: 1,038; sh: 875; makefile: 58
file content (172 lines) | stat: -rw-r--r-- 3,215 bytes parent folder | download | duplicates (2)
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