stopped services and workdir

Signed-off-by: fbt <fbt@fleshless.org>
This commit is contained in:
Jack L. Frost 2017-11-09 04:19:26 +03:00
parent 3ead5f0492
commit 8173828c62

20
ssm
View File

@ -188,6 +188,8 @@ depend_ready() {
super_start() { super_start() {
(( service_running )) && return 3 (( service_running )) && return 3
rm -f "$service_stopped_flag"
[[ -f "${service_command[0]}" ]] || return 9 [[ -f "${service_command[0]}" ]] || return 9
depend "${service_depends[@]}" || return 7 depend "${service_depends[@]}" || return 7
@ -250,6 +252,7 @@ super_stop() {
nullexec kill -n "$service_stop_signal" "$service_pid" || return 1 nullexec kill -n "$service_stop_signal" "$service_pid" || return 1
pid_wait "$service_pid" || return 5 pid_wait "$service_pid" || return 5
> "$service_stopped_flag"
return 0 return 0
fi fi
@ -318,6 +321,8 @@ logs() { "${PAGER:-less}" "$service_logfile"; }
status() { status() {
(( service_running )) && return 0 (( service_running )) && return 0
(( service_enabled )) && return 0 (( service_enabled )) && return 0
(( service_stopped )) && return 7
return 1 return 1
} }
@ -410,6 +415,7 @@ main() {
default service_reload_signal 1 default service_reload_signal 1
default service_ready_flag "$rundir/$service_name.ready" default service_ready_flag "$rundir/$service_name.ready"
default service_enabled_flag "$rundir/$service_name.enabled" default service_enabled_flag "$rundir/$service_name.enabled"
default service_stopped_flag "$rundir/$service_name.stopped"
# default does not support arrays # default does not support arrays
[[ "$service_signals" ]] || service_signals=( 1 10 12 ) [[ "$service_signals" ]] || service_signals=( 1 10 12 )
@ -430,9 +436,20 @@ main() {
service_enabled=1 service_enabled=1
fi fi
# Let's see if the service was deliberately stopped
if [[ -f "$service_stopped_flag" ]]; then
# Ooh, it was.
service_stopped=1
fi
# Check if action is even defined # Check if action is even defined
is_function "$2" || die 17 "Function $2 is not defined for $service_name." is_function "$2" || die 17 "Function $2 is not defined for $service_name."
# cd into the workdir, if defined.
[[ "$service_workdir" ]] && {
cd "$service_workdir" || die $?
}
# Run pre_$action function # Run pre_$action function
if is_function "pre_$2"; then if is_function "pre_$2"; then
"pre_$2" || { "pre_$2" || {
@ -475,7 +492,8 @@ main() {
else else
result "$res" \ result "$res" \
0 "$service_name is running" \ 0 "$service_name is running" \
1 "$service_name is not running" 1 "$service_name is not running" \
7 "$service_name was stopped"
fi fi
;; ;;
esac esac