From 0b6e3b6c703aa437d4fe583ef1911637c8b5a567 Mon Sep 17 00:00:00 2001 From: bnewbold Date: Sun, 16 Oct 2016 23:52:18 -0700 Subject: switch to direct man pages --- einhyrningsins.1.html | 190 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 einhyrningsins.1.html (limited to 'einhyrningsins.1.html') diff --git a/einhyrningsins.1.html b/einhyrningsins.1.html new file mode 100644 index 0000000..10f54ff --- /dev/null +++ b/einhyrningsins.1.html @@ -0,0 +1,190 @@ + + + + + + einhyrningsins(1) - graceful restarts for socket-based daemons + + + + + +
+ + + +
    +
  1. einhyrningsins(1)
  2. +
  3. +
  4. einhyrningsins(1)
  5. +
+ +

NAME

+

+ einhyrningsins - graceful restarts for socket-based daemons +

+ +

SYNOPSIS

+ +

einhyrningsins [OPTIONS] [--] PROGRAM [PROGRAM_ARGS]

+ +

DESCRIPTION

+ +

Einhyrningsins is a socket multiplexer featuring graceful restarts. It runs +multiple copies of a child program, each of which are passed a shared socket +(or multiple shared sockets) to bind(2) to and accept(2) connections from. +Graceful, rolling restarts enable updates of the child program with zero +downtime and no dropped connections.

+ +

This program requires special support in the child program to achive the +graceful restarts (aka, exiting only after all connection close) and to be able +to bind to inherited file descriptors (as indicated by environment variables). +Child programs must also be able to run in parallel: for example, each copy +must not try to write to the same output file without some form of locking.

+ + + + +

CHILD API

+ +

Einhyrningsins creates children by fork(1)-ing a new process and +execve(1)-ing to run the proces itself. For every socket specified by a -b +flag, a socket is bound in the main einhyrningsins process and then +explicitly flagged to be passed on to the child processes. This means the child +process will already have a valid file descriptor bound to each of the shared +sockets. The file descriptor numbers are passed via the following environment +variables:

+ +
+
EINHORN_FD_COUNT
How many sockets have been passed.
+
EINHORN_FD_<NUM>
One evironment for each socket with NUM from 0 to EINHORN_FD_COUNT-1.
+
+ + +

When einhyrningsins is run in manual mode, each child process should connect +to the control socket (at the UNIX path given by the EINHORN_SOCK_PATH +variable) and write(2) a newline-terminated string like the following, +containing the child's PID number:

+ +

{"command":"worker:ack", "pid":<PID>}

+ +

HISTORY

+ +

Einhyrningsins is a partially-comparible re-implementation of einhorn(1) (a +Ruby program) in Rust. Einhorn itself derived from Unicorn.

+ +

The word "Einhyrningsins" is Icelandic for unicorn.

+ +

STATUS

+ +

Einhyrningsins is a for-fun hobby project. It is not feature complete, fully +documented, or tested.

+ + + +

Copyright 2016 Bryan Newbold +License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html. +This is free software: you are free to change and redistribute it. There is NO +WARRANTY, to the extent permitted by law.

+ +

SEE ALSO

+ +

einhorn(1), einhyrningsinsctl(1), socket(7)

+ + +
    +
  1. +
  2. October 2016
  3. +
  4. einhyrningsins(1)
  5. +
+ +
+ + -- cgit v1.2.3