reset-exit fix
Signed-off-by: fbt <fbt@fleshless.org>
This commit is contained in:
parent
611349e243
commit
29bc62f208
37
README.md
37
README.md
|
@ -6,4 +6,39 @@ Yet another service manager.
|
|||
Services
|
||||
--------
|
||||
A service is a script in the ssm's init.d directory.
|
||||
By default it's /etc/ssm/init.d for system services and $XDG_CONFIG_HOME/ssm/init.d for user ones.
|
||||
By default it's /etc/ssm/services for system services and $XDG_CONFIG_HOME/ssm/services for user ones.
|
||||
|
||||
## Global settings
|
||||
|
||||
* cgroups
|
||||
* usrdir
|
||||
* service_path
|
||||
* cfg_path
|
||||
|
||||
## Service config
|
||||
|
||||
Mandatory options:
|
||||
|
||||
* service_command
|
||||
|
||||
Optional settings (incomplete list):
|
||||
|
||||
* service_respawn
|
||||
* service_workdir
|
||||
* service_pidfile
|
||||
* service_pidfile_timeout
|
||||
* service_pidfile_remove_stale
|
||||
* service_logfile_out
|
||||
* service_logfile_err
|
||||
* service_stop_timeout
|
||||
* service_ready_timeout
|
||||
* service_stop_signal
|
||||
* service_reload_signal
|
||||
* service_cgroup_exclusive
|
||||
* service_cgroup_wait
|
||||
* service_cgroup_strict
|
||||
* service_cgroup_kill
|
||||
* service_cgroup_kill_signal
|
||||
* service_cgroup_cleanup
|
||||
* service_success_exit
|
||||
* service_oneshot
|
||||
|
|
27
ssm
27
ssm
|
@ -544,7 +544,7 @@ qstatus() { nullexec status; }
|
|||
ready() { :; }
|
||||
|
||||
## Reset failes
|
||||
reset-failed() { rm -f "$service_exit_file"; }
|
||||
reset-exit() { rm -f "$service_exit_file"; }
|
||||
|
||||
# Main code
|
||||
## Empty declarations
|
||||
|
@ -580,6 +580,7 @@ var service_pid \
|
|||
## Internal defaults
|
||||
var flag_list_services = 0
|
||||
var flag_edit_service = 0
|
||||
var flag_reset_exit = 0
|
||||
|
||||
## check for some environment stuff
|
||||
var EDITOR := 'vim'
|
||||
|
@ -674,6 +675,9 @@ while (( $# )); do
|
|||
(-L|--list-services) # List all services
|
||||
flag_list_services = 1;;
|
||||
|
||||
(--reset-exit) # Reset last exit status
|
||||
flag_reset_exit = 1;;
|
||||
|
||||
(-e|--edit-service) # Edit the service file.
|
||||
flag_edit_service = 1;;
|
||||
|
||||
|
@ -731,13 +735,19 @@ fi
|
|||
service_config || die 19 "Service not found: $1"
|
||||
|
||||
# Edit the service config
|
||||
flag_edit_service && {
|
||||
edit; die $?
|
||||
}
|
||||
flag_edit_service && { edit; die $?; }
|
||||
|
||||
# Service name is the basename
|
||||
service_name = "${1##*/}"
|
||||
|
||||
# These depend on the service_name and make little sense to reconfigure.
|
||||
service_ready_flag := "$rundir/$service_name.ready"
|
||||
service_enabled_flag := "$rundir/$service_name.enabled"
|
||||
service_stopped_flag := "$rundir/$service_name.stopped"
|
||||
service_exit_file := "$rundir/$service_name.exit"
|
||||
service_cgroup_name := "$service_name"
|
||||
service_cgroup_path := "$cgroup_home/$service_name"
|
||||
|
||||
# Get the service defaults
|
||||
for p in "${cfg_path[@]/%//$service_name}"; do
|
||||
[[ -f "$p" ]] && {
|
||||
|
@ -745,6 +755,9 @@ for p in "${cfg_path[@]/%//$service_name}"; do
|
|||
}
|
||||
done
|
||||
|
||||
# Reset the exit status
|
||||
flag_reset_exit && { reset-exit; die $?; }
|
||||
|
||||
# Get the service config
|
||||
source -- "$service_config" "${@:3}" || die 7 "Failed to read the service config: $service_config"
|
||||
|
||||
|
@ -771,12 +784,6 @@ svc_pidfile = "$rundir/$service_name.pid"
|
|||
service_pidfile := "$svc_pidfile"
|
||||
service_logfile_out := "$logdir/${service_name}.log"
|
||||
service_logfile_err := "$service_logfile_out"
|
||||
service_ready_flag := "$rundir/$service_name.ready"
|
||||
service_enabled_flag := "$rundir/$service_name.enabled"
|
||||
service_stopped_flag := "$rundir/$service_name.stopped"
|
||||
service_exit_file := "$rundir/$service_name.exit"
|
||||
service_cgroup_name := "$service_name"
|
||||
service_cgroup_path := "$cgroup_home/$service_name"
|
||||
service_success_exit := 0
|
||||
|
||||
# A shortcut for disabling logging
|
||||
|
|
Loading…
Reference in New Issue
Block a user