-
-
Save Lowmana69/e950cf7b045f27bea4c6f0c354cd55bd to your computer and use it in GitHub Desktop.
h2 database init script ( based on Jenkins init script )
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# /etc/default/h2 | |
# defaults for h2 database server | |
# pulled in from the init script; makes things easier. | |
NAME=h2 | |
# location of java | |
JAVA=/usr/bin/java | |
# arguments to pass to java | |
JAVA_ARGS="-Xms256m -Xmx256m -cp $H2_HOME/bin/h2-$H2_VERSION.jar" | |
# pid file | |
PIDFILE=/var/run/h2/h2.pid | |
# user id to be invoked as (otherwise will run as root; not wise!) | |
H2_USER=h2 | |
# h2 version | |
H2_VERSION=1.3.163 | |
# h2 home location | |
H2_HOME=/usr/local/lib/h2-$H2_VERSION | |
# data location | |
H2_BASE_DIR=/var/lib/h2/data | |
# log location. this may be a syslog facility.priority | |
H2_LOG=/var/log/h2/$NAME.log | |
# OS LIMITS SETUP | |
# comment this out to observe /etc/security/limits.conf | |
# this is on by default because http://github.com/feniix/hudson/commit/d13c08ea8f5a3fa730ba174305e6429b74853927 | |
# reported that Ubuntu's PAM configuration doesn't include pam_limits.so, and as a result the # of file | |
# descriptors are forced to 1024 regardless of /etc/security/limits.conf | |
MAXOPENFILES=8192 | |
# port for TCP connector (default 9101) | |
TCP_PORT=9042 | |
# arguments to pass to h2. | |
H2_ARGS="-tcp -tcpPort $TCP_PORT -tcpAllowOthers -baseDir $H2_BASE_DIR" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# /etc/init.d/h2 | |
# debian-compatible h2 startup script. | |
# Amelia A Lewis <[email protected]> | |
# | |
### BEGIN INIT INFO | |
# Provides: h2 | |
# Required-Start: $remote_fs $syslog $network | |
# Required-Stop: $remote_fs $syslog $network | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: Start h2 at boot time | |
# Description: Controls the h2 database engine. | |
### END INIT INFO | |
PATH=/bin:/usr/bin:/sbin:/usr/sbin | |
DESC="H2 Database Server" | |
NAME=h2 | |
SCRIPTNAME=/etc/init.d/$NAME | |
[ -r /etc/default/$NAME ] && . /etc/default/$NAME | |
#DAEMON=$JENKINS_SH | |
DAEMON=/usr/bin/daemon | |
DAEMON_ARGS="--name=$NAME --inherit --env=H2_HOME=$H2_HOME --output=$H2_LOG --pidfile=$PIDFILE" | |
SU=/bin/su | |
# Exit if the package is not installed | |
[ -x "$DAEMON" ] || exit 0 | |
# Exit if not supposed to run standalone | |
[ "$RUN_STANDALONE" = "false" ] && exit 0 | |
# load environments | |
if [ -r /etc/default/locale ]; then | |
. /etc/default/locale | |
export LANG LANGUAGE | |
elif [ -r /etc/environment ]; then | |
. /etc/environment | |
export LANG LANGUAGE | |
fi | |
# Load the VERBOSE setting and other rcS variables | |
. /lib/init/vars.sh | |
# Define LSB log_* functions. | |
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present. | |
. /lib/lsb/init-functions | |
# Make sure we run as root, since setting the max open files through | |
# ulimit requires root access | |
if [ `id -u` -ne 0 ]; then | |
echo "The $NAME init script can only be run as root" | |
exit 1 | |
fi | |
check_tcp_port() { | |
local service=$1 | |
local assigned=$2 | |
local default=$3 | |
if [ -n "$assigned" ]; then | |
port=$assigned | |
else | |
port=$default | |
fi | |
count=`netstat --listen --numeric-ports | grep \:$port[[:space:]] | grep -c . ` | |
if [ $count -ne 0 ]; then | |
echo "The selected $service port ($port) seems to be in use by another program " | |
echo "Please select another port to use for $NAME" | |
return 1 | |
fi | |
} | |
# | |
# Function that starts the daemon/service | |
# | |
do_start() | |
{ | |
# the default location is /var/run/h2/h2.pid but the parent directory needs to be created | |
mkdir `dirname $PIDFILE` > /dev/null 2>&1 || true | |
chown $H2_USER `dirname $PIDFILE` | |
# Return | |
# 0 if daemon has been started | |
# 1 if daemon was already running | |
# 2 if daemon could not be started | |
$DAEMON $DAEMON_ARGS --running && return 1 | |
# Verify that the h2 port is not already in use, winstone does not exit | |
# even for BindException | |
check_tcp_port "tcp" "$TCP_PORT" "9042" || return 1 | |
# If the var MAXOPENFILES is enabled in /etc/default/h2 then set the max open files to the | |
# proper value | |
if [ -n "$MAXOPENFILES" ]; then | |
[ "$VERBOSE" != no ] && echo Setting up max open files limit to $MAXOPENFILES | |
ulimit -n $MAXOPENFILES | |
fi | |
# --user in daemon doesn't prepare environment variables like HOME, USER, LOGNAME or USERNAME, | |
# so we let su do so for us now | |
$SU -l $H2_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- $JAVA $JAVA_ARGS org.h2.tools.Server $H2_ARGS" || return 2 | |
} | |
# | |
# Verify that all h2 processes have been shutdown | |
# and if not, then do killall for them | |
# | |
get_running() | |
{ | |
return `ps -U $H2_USER --no-headers -f | egrep -e '(java|daemon)' | grep -c . ` | |
} | |
force_stop() | |
{ | |
get_running | |
if [ $? -ne 0 ]; then | |
killall -u $H2_USER java daemon || return 3 | |
fi | |
} | |
# Get the status of the daemon process | |
get_daemon_status() | |
{ | |
$DAEMON $DAEMON_ARGS --running || return 1 | |
} | |
# | |
# Function that stops the daemon/service | |
# | |
do_stop() | |
{ | |
# Return | |
# 0 if daemon has been stopped | |
# 1 if daemon was already stopped | |
# 2 if daemon could not be stopped | |
# other if a failure occurred | |
get_daemon_status | |
case "$?" in | |
0) | |
$DAEMON $DAEMON_ARGS --stop || return 2 | |
# wait for the process to really terminate | |
for n in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do | |
sleep 1 | |
$DAEMON $DAEMON_ARGS --running || break | |
done | |
if get_daemon_status; then | |
force_stop || return 3 | |
fi | |
;; | |
*) | |
force_stop || return 3 | |
;; | |
esac | |
# Many daemons don't delete their pidfiles when they exit. | |
rm -f $PIDFILE | |
return 0 | |
} | |
case "$1" in | |
start) | |
log_daemon_msg "Starting $DESC" "$NAME" | |
do_start | |
case "$?" in | |
0|1) log_end_msg 0 ;; | |
2) log_end_msg 1 ;; | |
esac | |
;; | |
stop) | |
log_daemon_msg "Stopping $DESC" "$NAME" | |
do_stop | |
case "$?" in | |
0|1) log_end_msg 0 ;; | |
2) log_end_msg 1 ;; | |
esac | |
;; | |
restart|force-reload) | |
# | |
# If the "reload" option is implemented then remove the | |
# 'force-reload' alias | |
# | |
log_daemon_msg "Restarting $DESC" "$NAME" | |
do_stop | |
case "$?" in | |
0|1) | |
do_start | |
case "$?" in | |
0) log_end_msg 0 ;; | |
1) log_end_msg 1 ;; # Old process is still running | |
*) log_end_msg 1 ;; # Failed to start | |
esac | |
;; | |
*) | |
# Failed to stop | |
log_end_msg 1 | |
;; | |
esac | |
;; | |
status) | |
get_daemon_status | |
case "$?" in | |
0) | |
echo "$DESC is running with the pid `cat $PIDFILE`" | |
rc=0 | |
;; | |
*) | |
get_running | |
procs=$? | |
if [ $procs -eq 0 ]; then | |
echo -n "$DESC is not running" | |
if [ -f $PIDFILE ]; then | |
echo ", but the pidfile ($PIDFILE) still exists" | |
rc=1 | |
else | |
echo | |
rc=3 | |
fi | |
else | |
echo "$procs instances of h2 are running at the moment" | |
echo "but the pidfile $PIDFILE is missing" | |
rc=0 | |
fi | |
exit $rc | |
;; | |
esac | |
;; | |
*) | |
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2 | |
exit 3 | |
;; | |
esac | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment