summarylogtreecommitdiffstats
path: root/questdb.sh
diff options
context:
space:
mode:
Diffstat (limited to 'questdb.sh')
-rw-r--r--questdb.sh276
1 files changed, 276 insertions, 0 deletions
diff --git a/questdb.sh b/questdb.sh
new file mode 100644
index 000000000000..9ca1fb23f462
--- /dev/null
+++ b/questdb.sh
@@ -0,0 +1,276 @@
+#!/usr/bin/env bash
+
+################################################################################
+# ___ _ ____ ____
+# / _ \ _ _ ___ ___| |_| _ \| __ )
+# | | | | | | |/ _ \/ __| __| | | | _ \
+# | |_| | |_| | __/\__ \ |_| |_| | |_) |
+# \__\_\\__,_|\___||___/\__|____/|____/
+#
+# Copyright (c) 2014-2019 Appsicle
+# Copyright (c) 2019-2023 QuestDB
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+################################################################################
+
+export QDB_PROCESS_LABEL="QuestDB-Runtime-66535"
+export QDB_MAX_STOP_ATTEMPTS=5
+export QDB_OS=$(uname)
+
+case $(uname) in
+Darwin | FreeBSD)
+ export PS_CMD="ps aux"
+ export QDB_DEFAULT_ROOT="/usr/local/var/questdb"
+ ;;
+*)
+ export PS_CMD="ps -ef"
+ export QDB_DEFAULT_ROOT="/var/lib/questdb"
+ ;;
+esac
+
+## jvm java_opt configurations
+if [ -f "/etc/questdb/jvm.env" ]; then
+ source "/etc/questdb/jvm.env"
+fi
+
+function read_link {
+ f=$(readlink $1)
+ if [ "$f" != "" ]; then
+
+ if [[ "$f" != /* ]]; then
+ f="$(dirname $1)/$f"
+ f="$(cd $(dirname ${f}); pwd)/$(basename ${f})"
+ fi
+
+ n=$(read_link ${f})
+ if [ "$n" != "" ]; then
+ f=${n};
+ fi
+ fi
+ echo "$f"
+}
+
+function usage {
+ echo "Usage: $0 start|status|stop [-f] [-d path] [-t tag]"
+ echo
+ exit 55
+}
+
+function export_pid {
+ export QDB_PID=`${PS_CMD} | grep ${QDB_PROCESS_LABEL} | grep -v grep | tr -s " " | cut -d " " -f 2`
+}
+
+function export_java {
+
+ # check if this is our runtime
+ if [ -f "$BASE/java" ]; then
+ export QDB_PACKAGE=withjre
+ export JAVA="$BASE/java"
+ else
+ export QDB_PACKAGE=withoutjre
+ if [ "$JAVA_HOME" = "" -a -e /usr/libexec/java_home ]; then
+ JAVA_HOME=$(/usr/libexec/java_home -v 11)
+ fi
+
+ # check that JAVA_HOME is defined
+ if [ "$JAVA_HOME" = "" ]; then
+ JAVA_HOME=/usr/lib/jvm/default
+ fi
+
+ # check that Java binary is executable
+ export JAVA=${JAVA_HOME}/bin/java
+ fi
+
+ if [ ! -x "$JAVA" ]; then
+ echo "$JAVA is not executable"
+ exit 55;
+ fi
+
+ echo "JAVA: $JAVA"
+}
+
+function export_args {
+
+ export QDB_OVERWRITE_PUBLIC=""
+ export QDB_DISABLE_HUP_HANDLER=""
+ export QDB_CONTAINER_MODE=""
+ export QDB_ROOT=${QDB_DEFAULT_ROOT}
+
+ while [[ $# -gt 0 ]]; do
+ key="$1"
+
+ case ${key} in
+ -f)
+ export QDB_OVERWRITE_PUBLIC="-f"
+ ;;
+ -n)
+ export QDB_DISABLE_HUP_HANDLER="-n"
+ ;;
+ -c)
+ export QDB_CONTAINER_MODE="-c"
+ ;;
+ -d)
+ if [[ $# -eq 1 ]]; then
+ echo "Expected: -d <path>"
+ exit 55
+ fi
+ export QDB_ROOT="$2"
+ shift
+ ;;
+ -t)
+ if [[ $# -eq 1 ]]; then
+ echo "Expected: -t <tag>"
+ exit 55
+ fi
+ export QDB_PROCESS_LABEL="QuestDB-Runtime-$2"
+ shift
+ ;;
+ *)
+ echo "Unexpected option: $key"
+ usage
+ ;;
+ esac
+ shift
+ done
+}
+
+function start {
+
+ export_pid
+
+ if [[ "${QDB_PID}" != "" ]]; then
+ echo "Already running. PID: ${QDB_PID}"
+ exit 55
+ fi
+
+ # LINK=$(read_link $0)
+ # if [ "$LINK" != "" ]; then
+ # BASE=$(dirname ${LINK})
+ # else
+ # BASE=$(dirname $0)
+ # fi
+ BASE=/usr/share/java/questdb
+
+ export_java
+
+ # create root directory if it does not exist
+ if [ ! -d "$QDB_ROOT" ]; then
+ echo "Created QuestDB ROOT directory: $QDB_ROOT"
+ mkdir -p ${QDB_ROOT}
+ fi
+
+ QDB_LOG=/var/log/questdb/
+ mkdir -p ${QDB_LOG}
+
+ JAVA_LIB="$BASE/questdb.jar"
+
+ JAVA_OPTS="${JAVA_OPTS}
+ -D$QDB_PROCESS_LABEL
+ -ea -Dnoebug
+ -XX:+UnlockExperimentalVMOptions
+ -XX:+AlwaysPreTouch
+ -XX:+UseParallelGC
+ "
+
+ JAVA_MAIN="io.questdb/io.questdb.ServerMain"
+ DATE=`date +%Y-%m-%dT%H-%M-%S`
+
+ if [ "${QDB_CONTAINER_MODE}" != "" ]; then
+ ${JAVA} ${JAVA_OPTS} -p ${JAVA_LIB} -m ${JAVA_MAIN} -d ${QDB_ROOT} ${QDB_OVERWRITE_PUBLIC} >${QDB_LOG}/stdout-${DATE}.txt
+ elif [ "${QDB_DISABLE_HUP_HANDLER}" = "" ]; then
+ ${JAVA} ${JAVA_OPTS} -p ${JAVA_LIB} -m ${JAVA_MAIN} -d ${QDB_ROOT} ${QDB_OVERWRITE_PUBLIC} >${QDB_LOG}/stdout-${DATE}.txt &
+ sleep 0.5
+ else
+ ${JAVA} ${JAVA_OPTS} -p ${JAVA_LIB} -m ${JAVA_MAIN} -d ${QDB_ROOT} ${QDB_OVERWRITE_PUBLIC} ${QDB_DISABLE_HUP_HANDLER} >${QDB_LOG}/stdout-${DATE}.txt
+ fi
+}
+
+function query {
+ export_pid
+
+ if [[ "${QDB_PID}" = "" ]]; then
+ echo "Not running"
+ else
+ echo "PID: ${QDB_PID}"
+ fi
+}
+
+function stop {
+ export_pid
+ if [[ "${QDB_PID}" = "" ]]; then
+ echo "Not running"
+ exit 55
+ fi
+
+ OUR_PID=${QDB_PID}
+
+ echo "Stopping ${OUR_PID}"
+
+ count=${QDB_MAX_STOP_ATTEMPTS}
+ while [ "${QDB_PID}" != "" ] && [ ${count} -gt 0 ]; do
+ kill ${QDB_PID}
+ sleep 0.5
+ export_pid
+ count=$((count - 1))
+ done
+
+ if [[ "${QDB_PID}" != "" ]]; then
+ kill -9 ${QDB_PID}
+ echo "Something is wrong. Process does not stop. Killing..."
+ export_pid
+ fi
+
+ if [[ "${QDB_PID}" != "" ]]; then
+ echo "Cannot stop ${QDB_PID}. Check permissions."
+ else
+ echo "Stopped ${OUR_PID}"
+ fi
+}
+
+function banner {
+ echo ''
+ echo ' ___ _ ____ ____'
+ echo ' / _ \ _ _ ___ ___| |_| _ \| __ )'
+ echo '| | | | | | |/ _ \/ __| __| | | | _ \'
+ echo '| |_| | |_| | __/\__ \ |_| |_| | |_) |'
+ echo ' \__\_\\__,_|\___||___/\__|____/|____/'
+ echo ' www.questdb.io'
+ echo
+}
+
+banner
+
+if [[ $# -gt 0 ]]; then
+ command=$1
+ shift
+
+ export_args $@
+
+ case ${command} in
+ start)
+ start
+ ;;
+ status)
+ query
+ ;;
+ stop)
+ stop
+ ;;
+ *)
+ usage
+ ;;
+ esac
+else
+ usage
+fi