cgroup tweaks
Signed-off-by: fbt <fbt@fleshless.org>
This commit is contained in:
parent
623bf57bdb
commit
2f3837d07c
16
ssm
16
ssm
|
@ -151,18 +151,18 @@ svc() {
|
||||||
|
|
||||||
printf '%s' $BASHPID > "$svc_pidfile"
|
printf '%s' $BASHPID > "$svc_pidfile"
|
||||||
|
|
||||||
|
# Cgroups
|
||||||
|
if cgroups; then
|
||||||
|
mkdir -p "$cgroup_home/$service_cgroup_name"
|
||||||
|
echo "$BASHPID" > "$cgroup_home/$service_cgroup_name/cgroup.procs"
|
||||||
|
fi
|
||||||
|
|
||||||
while true; do
|
while true; do
|
||||||
job_success = 0 # Needs to be reset
|
job_success = 0 # Needs to be reset
|
||||||
|
|
||||||
# Spawn the process and record the PID
|
# Spawn the process and record the PID
|
||||||
spawn "$@" & job_pid = "$!"
|
spawn "$@" & job_pid = "$!"
|
||||||
|
|
||||||
# Cgroups
|
|
||||||
if cgroups; then
|
|
||||||
mkdir -p "$cgroup_home/$service_cgroup_name"
|
|
||||||
echo "$job_pid" > "$cgroup_home/$service_cgroup_name/cgroup.procs"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Wait for the process to exit and record the exit code
|
# Wait for the process to exit and record the exit code
|
||||||
# This depends on a few things
|
# This depends on a few things
|
||||||
if service_managed; then
|
if service_managed; then
|
||||||
|
@ -552,12 +552,12 @@ var service_reload_signal = 1
|
||||||
var service_stop_signal = 15
|
var service_stop_signal = 15
|
||||||
var service_cgroup_exclusive = 0 # Refuse to start the service if its cgroup is not empty
|
var service_cgroup_exclusive = 0 # Refuse to start the service if its cgroup is not empty
|
||||||
var service_cgroup_wait = 0 # Wait on all the members of the cgroup to exit when stopping the service.
|
var service_cgroup_wait = 0 # Wait on all the members of the cgroup to exit when stopping the service.
|
||||||
|
var service_cgroup_strict = 1 # Enable checking if the main service PID is in the correct cgroup before doing anythin with the service
|
||||||
var service_success_exit = 0 # Array, takes exit codes that are to be treated as successful termination.
|
var service_success_exit = 0 # Array, takes exit codes that are to be treated as successful termination.
|
||||||
var service_pidfile_timeout = 15 # How long to wait for unmanaged services to create their pidfiles.
|
var service_pidfile_timeout = 15 # How long to wait for unmanaged services to create their pidfiles.
|
||||||
|
|
||||||
# Global config
|
# Global config
|
||||||
var cgroups = 0 # Enable cgroup-related functions
|
var cgroups = 0 # Enable cgroup-related functions
|
||||||
var cgroups_check_pid = 1 # Enable checking if the main service PID is in the correct cgroup before doing anythin with the service
|
|
||||||
var usrdir = '/usr/share/ssm'
|
var usrdir = '/usr/share/ssm'
|
||||||
|
|
||||||
# These are not
|
# These are not
|
||||||
|
@ -748,7 +748,7 @@ if cgroups; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If there's a service PID, check if it's in the service's cgroup
|
# If there's a service PID, check if it's in the service's cgroup
|
||||||
if cgroups_check_pid; then
|
if service_cgroup_strict; then
|
||||||
if service_pid; then
|
if service_pid; then
|
||||||
service_cgroup_procs u "$service_pid" || die 29 "Recorded service PID is not in the service's cgroup, bailing!"
|
service_cgroup_procs u "$service_pid" || die 29 "Recorded service PID is not in the service's cgroup, bailing!"
|
||||||
fi
|
fi
|
||||||
|
|
35
ssm.conf
35
ssm.conf
|
@ -1,41 +1,44 @@
|
||||||
# This is actually a bash script
|
# This is actually a bash script
|
||||||
|
|
||||||
|
# Enable cgroup-related functions
|
||||||
|
#cgroups = 0
|
||||||
|
|
||||||
# Where to search for services, works as a PATH-like array.
|
# Where to search for services, works as a PATH-like array.
|
||||||
#service_path = "$XDG_CONFIG_HOME/ssm/services" /etc/ssm/services "$rundir/services" /usr/share/ssm/services
|
#service_path = "$XDG_CONFIG_HOME/ssm/services" /etc/ssm/services "$rundir/services" /usr/share/ssm/services
|
||||||
|
|
||||||
# Service defaults
|
# Service defaults
|
||||||
# Respawn the service if it exits
|
|
||||||
|
## Respawn the service if it exits
|
||||||
#service_respawn = 0
|
#service_respawn = 0
|
||||||
|
|
||||||
# Working directory
|
## Working directory
|
||||||
#service_workdir = '/'
|
#service_workdir = '/'
|
||||||
|
|
||||||
# How long do we wait for the service to stop
|
## How long do we wait for the service to stop
|
||||||
#service_stop_timeout = 30
|
#service_stop_timeout = 30
|
||||||
|
|
||||||
# How long do we wait for the service to get ready
|
## How long do we wait for the service to get ready
|
||||||
#service_ready_timeout = 15
|
#service_ready_timeout = 15
|
||||||
|
|
||||||
# Signals to pass through to the service under the respawner
|
## Signals to pass through to the service under the respawner
|
||||||
#service_signals = 1 10 12
|
#service_signals = 1 10 12
|
||||||
|
|
||||||
# The signal to send to reload the service
|
## The signal to send to reload the service
|
||||||
#service_reload_signal = 1
|
#service_reload_signal = 1
|
||||||
|
|
||||||
# The signal to send to stop the service
|
## The signal to send to stop the service
|
||||||
#service_stop_signal = 15
|
#service_stop_signal = 15
|
||||||
|
|
||||||
# Enable cgroup-related functions
|
## These only work with cgroups = 1:
|
||||||
#cgroups = 0
|
|
||||||
|
|
||||||
# Check if the recorded PID of the service is in the correct cgroup.
|
## Check if the recorded PID of the service is in the correct cgroup.
|
||||||
# Only works with cgroups = 1
|
## Only works with cgroups = 1
|
||||||
#cgroups_check_pid = 1
|
#service_cgroup_strict = 1
|
||||||
|
|
||||||
# Refuse to start the service if its cgroup is not empty
|
## Refuse to start the service if its cgroup is not empty
|
||||||
# Only works with cgroups = 1
|
## Only works with cgroups = 1
|
||||||
#service_cgroup_exclusive = 0
|
#service_cgroup_exclusive = 0
|
||||||
|
|
||||||
# Wait on all the members of the cgroup to exit when stopping the service.
|
## Wait on all the members of the cgroup to exit when stopping the service.
|
||||||
# Only works with cgroups = 1
|
## Only works with cgroups = 1
|
||||||
#service_cgroup_wait = 0
|
#service_cgroup_wait = 0
|
||||||
|
|
Loading…
Reference in New Issue
Block a user