16
									
								
								ssm
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								ssm
									
									
									
									
									
								
							| @@ -151,18 +151,18 @@ svc() { | ||||
|  | ||||
| 	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 | ||||
| 		job_success = 0 # Needs to be reset | ||||
|  | ||||
| 		# Spawn the process and record the 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 | ||||
| 		# This depends on a few things | ||||
| 		if service_managed; then | ||||
| @@ -552,12 +552,12 @@ var service_reload_signal = 1 | ||||
| var service_stop_signal = 15 | ||||
| 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_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_pidfile_timeout = 15 # How long to wait for unmanaged services to create their pidfiles. | ||||
|  | ||||
| # Global config | ||||
| 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' | ||||
|  | ||||
| # These are not | ||||
| @@ -748,7 +748,7 @@ if cgroups; then | ||||
| 	fi | ||||
|  | ||||
| 	# 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 | ||||
| 			service_cgroup_procs u "$service_pid" || die 29 "Recorded service PID is not in the service's cgroup, bailing!" | ||||
| 		fi | ||||
|   | ||||
							
								
								
									
										35
									
								
								ssm.conf
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								ssm.conf
									
									
									
									
									
								
							| @@ -1,41 +1,44 @@ | ||||
| # This is actually a bash script | ||||
|  | ||||
| # Enable cgroup-related functions | ||||
| #cgroups = 0 | ||||
|  | ||||
| # 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 defaults | ||||
| # Respawn the service if it exits | ||||
|  | ||||
| ## Respawn the service if it exits | ||||
| #service_respawn = 0 | ||||
|  | ||||
| # Working directory | ||||
| ## Working directory | ||||
| #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 | ||||
|  | ||||
| # 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 | ||||
|  | ||||
| # 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 | ||||
|  | ||||
| # The signal to send to reload the service | ||||
| ## The signal to send to reload the service | ||||
| #service_reload_signal = 1 | ||||
|  | ||||
| # The signal to send to stop the service | ||||
| ## The signal to send to stop the service | ||||
| #service_stop_signal = 15 | ||||
|  | ||||
| # Enable cgroup-related functions | ||||
| #cgroups = 0 | ||||
| ## These only work with cgroups = 1: | ||||
|  | ||||
| # Check if the recorded PID of the service is in the correct cgroup. | ||||
| # Only works with cgroups = 1 | ||||
| #cgroups_check_pid = 1 | ||||
| ## Check if the recorded PID of the service is in the correct cgroup. | ||||
| ## Only works with cgroups = 1 | ||||
| #service_cgroup_strict = 1 | ||||
|  | ||||
| # Refuse to start the service if its cgroup is not empty | ||||
| # Only works with cgroups = 1 | ||||
| ## Refuse to start the service if its cgroup is not empty | ||||
| ## Only works with cgroups = 1 | ||||
| #service_cgroup_exclusive = 0 | ||||
|  | ||||
| # Wait on all the members of the cgroup to exit when stopping the service. | ||||
| # Only works with cgroups = 1 | ||||
| ## Wait on all the members of the cgroup to exit when stopping the service. | ||||
| ## Only works with cgroups = 1 | ||||
| #service_cgroup_wait = 0 | ||||
|   | ||||
		Reference in New Issue
	
	Block a user