88 lines
2.0 KiB
Bash
Executable File
88 lines
2.0 KiB
Bash
Executable File
#! /usr/bin/env bash
|
|
#
|
|
# wmstartup service common functions
|
|
# Copyright (C) 2018 salt <salt@lap-th-e560-0>
|
|
#
|
|
# Distributed under terms of the MIT license.
|
|
#
|
|
|
|
service_name="unnamed_service"
|
|
service_process="true"
|
|
service_kill_on_reload="true"
|
|
service_flags=""
|
|
|
|
# Basic logging service. Do not override unless necessary
|
|
function svc_log() {
|
|
if [ -z ${1+x} ]; then return 1; fi
|
|
out=1
|
|
if ! [ -z ${2+x} ]; then out="$2"; fi
|
|
col_reset="\e[0m"
|
|
col_svcname="\e[94m"
|
|
col_message="\e[39m"
|
|
if ! [ "$out" -eq "1" ]; then col_message="\e[31m"; fi
|
|
if [ "$out" -eq "0" ]; then
|
|
out=1
|
|
col_message="\e[37m"
|
|
fi
|
|
dtf_log "${col_svcname}${service_name}${col_reset}: ${col_message}${1}${col_reset}" >&${out}
|
|
}
|
|
|
|
# Basic pre-start checks. Stick extra checks in prestart-extra
|
|
function prestart() {
|
|
if isup; then
|
|
svc_log "Already running" 0
|
|
return 1
|
|
fi
|
|
if ! which $service_process > /dev/null 2>&1; then
|
|
svc_log "Could not find associated binary: \"${service_process}\"" 2
|
|
return 1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
# Template function. If it fails, the service will not be started
|
|
function prestart-extra() {
|
|
return 0
|
|
}
|
|
|
|
# Basic start function. Override if you have special startup functionality
|
|
function start() {
|
|
svc_log "Starting"
|
|
$service_process $service_flags > /dev/null 2>&1 &
|
|
return 0
|
|
}
|
|
|
|
# Template function. Override for post-startup tasks
|
|
# Can also be used for blocking
|
|
function start-extra() {
|
|
return 0
|
|
}
|
|
|
|
# Basic stop function. Kills the task and implements a SIGKILL timer
|
|
function stop() {
|
|
svc_log "Stopping"
|
|
killall $service_process &
|
|
for i in {1..100}; do
|
|
if ! isup; then break; fi
|
|
sleep 0.01
|
|
if (( $i > 99 )); then
|
|
svc_log "Stopping with prejudice"
|
|
killall -9 $service_process
|
|
fi
|
|
done
|
|
return $?
|
|
}
|
|
|
|
# Basic process detection function. Returns 0 if the process exists.
|
|
function isup() {
|
|
pgrep "$service_process" > /dev/null 2>&1
|
|
isup-extra $?
|
|
return $?
|
|
}
|
|
|
|
# Template function. Gets passed the result of a simple pgrep for the process
|
|
function isup-extra() {
|
|
return $1
|
|
}
|
|
|