1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' value='text/html;charset=utf8'>
<meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
<title>einhyrningsins(1) - graceful restarts for socket-based daemons</title>
<style type='text/css' media='all'>
/* style: man */
body#manpage {margin:0}
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
.mp h2 {margin:10px 0 0 0}
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
.mp h3 {margin:0 0 0 4ex}
.mp dt {margin:0;clear:left}
.mp dt.flush {float:left;width:8ex}
.mp dd {margin:0 0 0 9ex}
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
.mp pre {margin-bottom:20px}
.mp pre+h2,.mp pre+h3 {margin-top:22px}
.mp h2+pre,.mp h3+pre {margin-top:5px}
.mp img {display:block;margin:auto}
.mp h1.man-title {display:none}
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
.mp h2 {font-size:16px;line-height:1.25}
.mp h1 {font-size:20px;line-height:2}
.mp {text-align:justify;background:#fff}
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
.mp u {text-decoration:underline}
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
.mp b.man-ref {font-weight:normal;color:#434241}
.mp pre {padding:0 4ex}
.mp pre code {font-weight:normal;color:#434241}
.mp h2+pre,h3+pre {padding-left:0}
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
ol.man-decor {width:100%}
ol.man-decor li.tl {text-align:left}
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
ol.man-decor li.tr {text-align:right;float:right}
</style>
<style type='text/css' media='all'>
/* style: toc */
.man-navigation {display:block !important;position:fixed;top:0;left:113ex;height:100%;width:100%;padding:48px 0 0 0;border-left:1px solid #dbdbdb;background:#eee}
.man-navigation a,.man-navigation a:hover,.man-navigation a:link,.man-navigation a:visited {display:block;margin:0;padding:5px 2px 5px 30px;color:#999;text-decoration:none}
.man-navigation a:hover {color:#111;text-decoration:underline}
</style>
</head>
<!--
The following styles are deprecated and will be removed at some point:
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
.man-navigation should be used instead.
-->
<body id='manpage'>
<div class='mp' id='man'>
<div class='man-navigation' style='display:none'>
<a href="#NAME">NAME</a>
<a href="#SYNOPSIS">SYNOPSIS</a>
<a href="#DESCRIPTION">DESCRIPTION</a>
<a href="#STATUS">STATUS</a>
<a href="#COPYRIGHT">COPYRIGHT</a>
<a href="#SEE-ALSO">SEE ALSO</a>
</div>
<ol class='man-decor man-head man head'>
<li class='tl'>einhyrningsins(1)</li>
<li class='tc'></li>
<li class='tr'>einhyrningsins(1)</li>
</ol>
<h2 id="NAME">NAME</h2>
<p class="man-name">
<code>einhyrningsins</code> - <span class="man-whatis">graceful restarts for socket-based daemons</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<p><code>einhyrningsins</code> [OPTIONS] -- PROGRAM [PROGRAM_ARGS]</p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>This is a socket multiplexer featuring graceful restarts. It runs multiple
copies of the child program that are passed a shared socket (or more than one)
to bind to and accept connections from. Graceful rolling restarts enable
updates of the child program with zero downtime and no dropped connections.</p>
<p>This program requires special support in the child program to achive the
graceful restarts and bind to inherited file descriptors indicated by
environment variables.</p>
<p><a class="man-ref" href="einhyrningsins.1.html">einhyrningsins<span class="s">(1)</span></a> is a partially-comparible re-implementation of <span class="man-ref">einhorn<span class="s">(1)</span></span> (a
Ruby program) in Rust. Einhorn itself derived from Unicorn.</p>
<ul>
<li><code>-n</code>, <code>--number</code>=COUNT
How many child processes to spawn.</li>
<li><code>-b</code>, <code>--bind</code> ADDR
Socket(s) to bind to. This argument can be repeated.</li>
<li><code>-4</code>, <code>--ipv4-only</code>:
Only accept IPv4 connections</li>
<li><code>-6</code>, <code>--ipv6-only</code>
Only accept IPv6 connections</li>
<li><code>-h</code>, <code>--help</code>
Print a help menu</li>
<li><code>--version</code>
Print program version</li>
<li><code>-v</code>, <code>--verbose</code>
More verbose logging and output</li>
</ul>
<h2 id="STATUS">STATUS</h2>
<p>This is a fun fun hobby project. Still in progress, and notably untested.</p>
<h2 id="COPYRIGHT">COPYRIGHT</h2>
<p>Copyright 2016 Bryan Newbold
License GPLv3+: GNU GPL version 3 or later <a href="http://gnu.org/licenses/gpl.html" data-bare-link="true">http://gnu.org/licenses/gpl.html</a>.
This is free software: you are free to change and redistribute it. There is NO
WARRANTY, to the extent permitted by law.</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<p><code>einhorn (1)</code>, <code>einhyrningsinsctl(1)</code></p>
<ol class='man-decor man-foot man foot'>
<li class='tl'></li>
<li class='tc'>October 2016</li>
<li class='tr'>einhyrningsins(1)</li>
</ol>
</div>
</body>
</html>
|