Skip to main content

A command line interface for creating & managing s6 services, using the s6 toolset

Project description

A command line interface for creating & managing s6 services, using the s6 toolset

Dependencies:

  • Python 3.6+

  • Plumbum

  • s6

  • BusyBox or (lsof, psmisc, coreutils)

  • musl-utils or glibc

Optional Dependencies:

  • lnav or multitail

  • highlight or bat

Demo Video

Installation

From PyPI:

pip install essex
# activate bash completion:
complete -o dirnames -C _essex essex

From 64-bit musl binary release:

wget "https://github.com/AndydeCleyre/essex/releases/download/2.0.2/essex-2.0.2-musl-x86_64.tar.xz" -O - | tar xJf - -C /usr/local/bin essex _essex
complete -o dirnames -C _essex essex  # bash completion

Usage

essex 2.0.2

Simply manage services

Usage:
    essex [SWITCHES] [SUBCOMMAND [SWITCHES]]

Meta-switches:
    -h, --help                                             Prints this help message and quits
    --help-all                                             Prints help messages of all sub-commands and quits
    -v, --version                                          Prints the program's version and quits

Switches:
    -d, --directory SERVICES_DIRECTORY:path                folder of services to manage; the default is the first existing match from ('./svcs',
                                                           '~/svcs', '/var/svcs', '/svcs'), unless a colon-delimited SERVICES_PATHS env var exists;
    -l, --logs-directory SERVICES_LOGS_DIRECTORY:path      folder of services' log files; the default is SERVICES_DIRECTORY/../svcs-logs

Sub-commands:
    cat                                                    View (all or specified) services' run, finish, and log commands; Alias for print
    disable                                                Configure (all or specified) services to be down, without actually stopping them
    enable                                                 Configure (all or specified) services to be up, without actually starting them
    list                                                   List all known services
    log                                                    View (all or specified) services' current log files
    new                                                    Create a new service
    off                                                    Stop all services and their supervision
    on                                                     Start supervising all services
    pid                                                    Print the PIDs of running services, or s6-svscan (supervision root) if none specified
    print                                                  View (all or specified) services' run, finish, and log commands
    pt                                                     Print a sample Papertrail log_files.yml
    reload                                                 Restart (all or specified) running services whose run scripts have changed; Depends on
                                                           the runfile generating an adjacent run.md5 file, like essex-generated runfiles do; Alias
                                                           for upgrade; Deprecated
    sig                                                    Send a signal to (all or specified) services
    start                                                  Start (all or specified) services
    status                                                 View the current states of (all or specified) services
    stop                                                   Stop (all or specified) services
    sync                                                   Start or stop services to match their configuration
    tree                                                   View the process tree from the supervision root
    upgrade                                                Restart (all or specified) running services whose run scripts have changed; Depends on
                                                           the runfile generating an adjacent run.md5 file, like essex-generated runfiles do

Packaging

pip install -r requirements.txt
# Edit pyproject.toml as desired.
# Create a wheel and source distribution in dist/:
flit build
# Create a wheel and source distribution in dist/ AND upload to PyPI:
flit publish

One can build a single-file executable suitable for dropping into an Alpine-based container with s6 (no Python or Plumbum necessary), using Docker and pyinstaller-alpine.

From the inner essex folder:

docker run --rm -v "${PWD}:/src" inn0kenty/pyinstaller-alpine:3.7 -F --clean ./essex.py

It comes out to ~10MB. Alternatively, a build script using the same image, but Buildah rather than Docker, is included as mkbin.sh.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

essex-2.0.2.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

essex-2.0.2-py2.py3-none-any.whl (32.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file essex-2.0.2.tar.gz.

File metadata

  • Download URL: essex-2.0.2.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.21.0

File hashes

Hashes for essex-2.0.2.tar.gz
Algorithm Hash digest
SHA256 3b159e68dc6023a980959dfcbda7c8cfa89e8d7ef64a203f7389fe2d63a54f88
MD5 06d0bb18c523ddfa71f97e71f5080705
BLAKE2b-256 95aa8faf3924c0d5ed9a7b257c596f5b7591f7573dd601d9fd75041a9d4407fa

See more details on using hashes here.

File details

Details for the file essex-2.0.2-py2.py3-none-any.whl.

File metadata

  • Download URL: essex-2.0.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 32.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.21.0

File hashes

Hashes for essex-2.0.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a8b25de0e7548cd729ba5841088531fff1ae915cae227fe3f369c1d295279b34
MD5 1e0e27b55868a27cdfb8291f553a1096
BLAKE2b-256 769afcec462addfb310f6801e1bb9e747c9542df3778b9d72777af58012fa74d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page