The cosc* scripts are a family of POSIX shell executables that manage
a set of long running processes in a GNU-Screen session. Current version
is 20180921.170040.
The configuration is stored in a directory: the root path can be itself
configured with the $cosc_root environment variable (default value:
/tmp/service_composer_config.d). One edits the configuration by
calling cosc config {addjob,initialize,destroy,…}, and displays it
with cosc config show.
The scripts are generated by an OCaml program which uses the Genspio EDSL/library. The code generator serves as one of the usage examples of the library, see its implementation.
The code generator can also be used to change a few parameters like the
“name-prefix” (cosc here), or the default value of the
configuration path (/tmp/service_composer_config.d). This can be
useful to build custom/project-specific scripts that can remain
independent from each other without setting an environment variable.
Simply copy cosc* to somewhere in your $PATH, the scripts depend on
a reasonably valid version of /bin/sh and GNU Screen.
If you are using the code-generator, you can just point the
--output-path option at the right directory.
The basic manual is obtained from the cosc man command. The, present,
“README.md” version is the result of cosc man --extended.
Then, see cosc --help first, or for any sub-command try
cosc <command> --help.
cosc isolates Screen sessions by using their session name.
The screen session name can be configured a 2 levels:
- At script-generation time, one can set the default-value (with the
option
--screen-name). - At configuration time, one can overwrite the value with
-S, seecosc config init --help.
If none of those two options is provided, cosc config init will
generate a name, which is function of the root path and generation
parameters and tries to ensure that the session is unique on the host.
If you have opam, setting up the genspio
repository is easy (only simple, pure OCaml dependencies), if not, or if
you just like Docker™, the generator is available in the
smondet/genspio-doc-dockerfiles:apps406 image, see:
docker run -it smondet/genspio-doc-dockerfiles:apps406 genspio-service-composer --help
The distribution comes with runnable examples, try
cosc example --help. Here is the “basic” example:
# We setup the configuration root path:
export cosc_root=/tmp/example-basic.d
# Show the current configuration:
cosc config show
# OK, let's initialize configuration:
cosc config init
# Let's configure a few jobs:
cosc config addjob --name DMesg --no-log -c "watch -c -d -n 30 'dmesg -P'"
cosc config addjob --name Top --no-log -c top
cosc config addjob --name Dummy --interpreter 'bash -c' \
-c 'while true ; do sleep 3 ; echo "$(date)" ; done'
# Show the updated configuration:
cosc config show
# Show the current status:
cosc status
# Start everything:
cosc start --all
# Show the updated status:
cosc status
# Stop everything:
cosc kill --all
# Show the updated (short) status:
cosc status --short
# Destroy the configuration:
cosc config destroy
The code generator is covered by the Apache 2.0 license, the scripts are ISC licensed.