56 Commits
0.3.2 ... 0.4.1

Author SHA1 Message Date
fbt
94bb395417 Oops
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-06 19:47:42 +03:00
fbt
dfd942ca49 change namespacing from :: to service::
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-06 19:42:31 +03:00
fbt
da1ffe1a7b enforce strict service name rules
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-06 19:30:04 +03:00
fbt
bf85069b32 oops. This makes more sense.
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-06 18:29:30 +03:00
fbt
8cee6abd50 cleanup & setup
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-06 18:21:21 +03:00
fbt
88e05630ae Signal passthru and support for $service_name::function style namespacing
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-06 17:42:10 +03:00
fbt
075d94e58c Separate the svc pidfile and the service one
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-06 07:40:02 +03:00
fbt
4414293f9b readme
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 04:45:26 +03:00
fbt
5c7cec8520 readme
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 04:41:55 +03:00
fbt
29bc62f208 reset-exit fix
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 04:28:35 +03:00
fbt
611349e243 early edit; list known
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 03:42:30 +03:00
fbt
52f3117d3f Remove stale pidfiles in the respawn loop
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 02:52:55 +03:00
fbt
4bcd4cc58b Silly ssm, search where you lost it, not where it is light
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 02:01:26 +03:00
fbt
42f42182ae cgroup cleanup
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 01:36:40 +03:00
fbt
7e0df4a559 +#service_cgroup_cleanup
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 01:13:55 +03:00
fbt
8ae151b601 A feature to kill the cgroup members when stopping the service
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 01:01:57 +03:00
fbt
2f3837d07c cgroup tweaks
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 00:35:29 +03:00
fbt
623bf57bdb exit code and failure states rework
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-05 00:16:45 +03:00
fbt
7a3bb1a5f0 respawn rework
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-04 19:26:40 +03:00
fbt
39eb1aff49 Respawn cleanup and new features; usage
Signed-off-by: fbt <fbt@fleshless.org>
2018-03-04 16:55:53 +03:00
fbt
92b54483bd these should also be readonly
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-22 20:08:48 +03:00
fbt
9516f9d5fe Found how to break it
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-10 22:00:22 +03:00
fbt
339ccd1b47 Turned out not to be very useful
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-10 11:30:02 +03:00
fbt
730374f6d7 more sugar
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-09 23:47:50 +03:00
fbt
e2ac26902c A switch to disable checking if the service pid is in the correct cgroup
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-09 16:53:02 +03:00
fbt
5c33fc5712 A very old bug indeed
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 14:22:13 +03:00
fbt
e5fc565433 artefact of old
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 14:17:02 +03:00
fbt
d0d20d7d9c separate cfg files after all; some cleanup
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 14:12:34 +03:00
fbt
f548e6f53d oops
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 12:08:01 +03:00
fbt
9343c78b33 ssm.conf
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 12:02:02 +03:00
fbt
f026de8bb1 this ignores whitespace
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 11:52:40 +03:00
fbt
a715783fbf More cgroup stuff
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 10:33:06 +03:00
fbt
f191b625dc rudimentary cgroup support
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 08:07:18 +03:00
fbt
2d748aebc9 can only 'return' from a function or sourced script
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 05:58:23 +03:00
fbt
e733ed4f6a logfile cleanup
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 05:48:40 +03:00
fbt
a5f93916cd ooops :3
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 04:52:15 +03:00
fbt
4dee8a29b6 some cleanup
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 04:47:42 +03:00
fbt
758e841e1e var
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-08 04:38:24 +03:00
fbt
a633061d30 Some more systemd work, a simple DSL
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-07 12:02:12 +03:00
fbt
51d452934a Ho about this then
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-07 09:12:12 +03:00
fbt
3c6fb9796b Another oops
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-07 08:56:33 +03:00
fbt
08b7d5631d oops
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-07 08:47:23 +03:00
fbt
234ee56bed Rudimentary support for systemd services
Signed-off-by: fbt <fbt@fleshless.org>
2018-01-07 08:36:39 +03:00
fbt
903d3e9888 small fix
Signed-off-by: fbt <fbt@fleshless.org>
2017-12-21 16:53:58 +03:00
fbt
025d74179b edit()
Signed-off-by: fbt <fbt@fleshless.org>
2017-12-21 16:12:53 +03:00
fbt
c48486cacf just some silly refactoring
Signed-off-by: fbt <fbt@fleshless.org>
2017-12-16 00:36:32 +03:00
fbt
873f0f6809 rogue debug change, reverting
Signed-off-by: fbt <fbt@fleshless.org>
2017-12-14 18:42:12 +03:00
fbt
492e2aa81b Make internal functions readonly
Signed-off-by: fbt <fbt@fleshless.org>
2017-12-14 18:41:03 +03:00
fbt
cb6b3d61df Merge branch 'master' of builder.priv:spark/ssm 2017-12-14 07:10:56 +03:00
fbt
6252f8fc1e Merge branch 'master' of builder.priv:spark/ssm
Signed-off-by: fbt <fbt@fleshless.org>
2017-12-14 07:10:29 +03:00
fbt
21a717762a Merge branch 'master' of builder.priv:spark/ssm 2017-12-14 07:09:43 +03:00
fbt
905b3e0b37 Full path; default workdir
* Determine our full path and use that instead of /bin/zsh
* Default workdir for all services is now '/'

Signed-off-by: fbt <fbt@fleshless.org>
2017-12-14 07:08:32 +03:00
fbt
784f4eee49 Determine our full path and use that instead of /bin/zsh
Signed-off-by: fbt <fbt@fleshless.org>
2017-12-14 07:07:48 +03:00
fbt
32b26b5783 cfg_path bugfix
Signed-off-by: fbt <fbt@fleshless.org>
2017-12-10 20:13:51 +03:00
fbt
6f2db37dff Show the config path in the info
Signed-off-by: fbt <fbt@fleshless.org>
2017-12-10 19:48:22 +03:00
fbt
842662f3d5 Actually, let's move softly
Signed-off-by: fbt <fbt@fleshless.org>
2017-12-10 19:42:25 +03:00
3 changed files with 874 additions and 381 deletions

View File

@@ -6,4 +6,37 @@ 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 = 0` — Enable cgroup-related features.
## Service config
Mandatory options:
* `service_command = /usr/bin/example -a --long-arg "parameter"`
Optional settings (incomplete list):
* `service_respawn = no` — Restart the service. Takes `no`, `always`, `on-failure` and `on-success`.
* `service_workdir = /`
* `service_pidfile` — If the service manages its own pidfile, set this.
* `service_pidfile_timeout = 15` — How long to wait for the service to create its pidfile.
* `service_pidfile_remove_stale = yes` — Remove stale pidfiles before spawning the service process.
* `service_logfile_out = $logdir/$service_name.log` — Logfile for output.
* `service_logfile_err = $service_logfile_out` — Logfile for stderr.
* `service_stop_timeout = 30` — How long to wait after sending the stop command.
* `service_ready_timeout = 15` — How long to wait till the service is ready, in seconds.
* `service_stop_signal = 15` — Which signal to send to the service when stopping.
* `service_reload_signal = 1` — Which signal to send to the service when reloading.
* `service_cgroup_exclusive = no` — Refuse to start the service if the cgroup is not empty.
* `service_cgroup_wait = no` — Wait on the entire cgroup to die when stopping the service.
* `service_cgroup_strict = 1` — Refuse to do anything if the service's recorded PID is both running and not in the service's appropriate cgroup. This usually means you've either found a bug or something bad happened to your system.
* `service_cgroup_kill = no` — Kill the entire cgroup when stopping the service.
* `service_cgroup_kill_signal = 15` — Which signal to use for that.
* `service_cgroup_cleanup = no` — Kill the entire cgroup on watchdog cleanup. Note that it is distinctly not the same as killing the cgroup on stopping.
* `service_success_exit = 0` — Array. Which exit codes to treat as successful termination. Only works for managed services (With no custom pidfile).
* `service_oneshot = no` — The service is supposed to do something and die instead of daemonizing.
* `service_signals_passthru` — Array, empty by default. Which signals should the svc pass directly to the service mainpid. This is dangerous, use with caution.

1079
ssm

File diff suppressed because it is too large Load Diff

49
ssm.conf Normal file
View File

@@ -0,0 +1,49 @@
# 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
#service_respawn = 0
## Working directory
#service_workdir = '/'
## 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
#service_ready_timeout = 15
## Signals to pass through to the service under the respawner
#service_signals = 1 10 12
## The signal to send to reload the service
#service_reload_signal = 1
## The signal to send to stop the service
#service_stop_signal = 15
## These only work with cgroups = 1:
## Check if the recorded PID of the service is in the correct cgroup.
#service_cgroup_strict = 1
## Refuse to start the service if its cgroup is not empty
#service_cgroup_exclusive = 0
## Wait on all the members of the cgroup to exit when stopping the service.
#service_cgroup_wait = 0
## Send a kill signal to the members of cgroup when
## stopping the service, and the signal to send:
#service_cgroup_kill = 0
#service_cgroup_kill_signal = 15
# Clean up the cgroup when the service exits for any reason
#service_cgroup_cleanup = 0