summary refs log tree commit diff
path: root/doc/sv.8.html
blob: 1fb4d8449f2d6a32f525cd9ad5ccdaf51007884f (plain) (blame)
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
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206



<html>
<head>
<title>sv(8) manual page</title>
</head>
<body bgcolor='white'>
<a href='http://smarden.org/pape/'>G. Pape</a><br><a href='index.html'>runit</A><hr><p>

<h2><a name='sect0'>Name</a></h2>
sv - control and manage services monitored by <i><b>runsv</b>(8)</i> 
<h2><a name='sect1'>Synopsis</a></h2>
<b>sv</b> [-v]
[-w <i>sec]</i> <i>command</i> <i>services</i> <p>
<b>/etc/init.d/</b><i>service</i> [-w <i>sec]</i> <i>command</i> 
<h2><a name='sect2'>Description</a></h2>
The
<b>sv</b> program reports the current status and controls the state of services
monitored by the <i><b>runsv</b>(8)</i> supervisor. <p>
<i>services</i> consists of one or more arguments,
each argument naming a directory <i>service</i> used by <i><b>runsv</b>(8)</i>. If <i>service</i> doesn&rsquo;t
start with a dot or slash, it is searched in the default services directory
<i>/service/</i>, otherwise relative to the current directory. <p>
<i>command</i> is one
of up, down, status, once, pause, cont, hup, alarm, interrupt, 1, 2, term,
kill, or exit, or start, stop, restart, shutdown, force-stop, force-reload,
force-restart, force-shutdown. <p>
The <b>sv</b> program can be sym-linked to <i>/etc/init.d/</i>
to provide an LSB init script interface. The <i>service</i> to be controlled then
is specified by the base name of the &lsquo;&lsquo;init script&rsquo;&rsquo;. 
<h2><a name='sect3'>Commands</a></h2>

<dl>

<dt><b>status</b> </dt>
<dd>Report
the current status of the service, and the appendant log service if available,
to standard output. </dd>

<dt><b>up</b> </dt>
<dd>If the service is not running, start it. If the service
stops, restart it. </dd>

<dt><b>down</b> </dt>
<dd>If the service is running, send it the TERM signal,
and the CONT signal. If ./run exits, start ./finish if it exists. After it
stops, do not restart service. </dd>

<dt><b>once</b> </dt>
<dd>If the service is not running, start
it. Do not restart it if it stops. </dd>

<dt><b>pause cont hup alarm interrupt quit 1
2 term kill</b> </dt>
<dd>If the service is running, send it the STOP, CONT, HUP, ALRM,
INT, QUIT, USR1, USR2, TERM, or KILL signal respectively. </dd>

<dt><b>exit</b> </dt>
<dd>If the service
is running, send it the TERM signal, and the CONT signal. Do not restart
the service. If the service is down, and no log service exists, <i><b>runsv</b>(8)</i>
exits. If the service is down and a log service exists, send the TERM signal
to the log service. If the log service is down, <i><b>runsv</b>(8)</i> exits. This command
is ignored if it is given to an appendant log service. </dd>
</dl>
<p>
<b>sv</b> actually looks
only at the first character of these <i>command</i>s. 
<h3><a name='sect4'>Commands compatible to LSB
init script actions</a></h3>

<dl>

<dt><b>status</b> </dt>
<dd>Same as <i>status</i>. </dd>

<dt><b>start</b> </dt>
<dd>Same as <i>up</i>, but wait up
to 7 seconds for the command to take effect. Then report the status or timeout.
If the script <i>./check</i> exists in the service directory, <b>sv</b> runs this script
to check whether the service is up and available; it&rsquo;s considered to be
available if <i>./check</i> exits with 0. </dd>

<dt><b>stop</b> </dt>
<dd>Same as <i>down</i>, but wait up to 7 seconds
for the service to become down. Then report the status or timeout. </dd>

<dt><b>restart</b>
</dt>
<dd>Send the commands <i>term</i>, <i>cont</i>, and <i>up</i> to the service, and wait up to 7 seconds
for the service to restart. Then report the status or timeout. If the script
<i>./check</i> exists in the service directory, <b>sv</b> runs this script to check whether
the service is up and available again; it&rsquo;s considered to be available if
<i>./check</i> exits with 0. </dd>

<dt><b>shutdown</b> </dt>
<dd>Same as <i>exit</i>, but wait up to 7 seconds for
the <i><b>runsv</b>(8)</i> process to terminate. Then report the status or timeout. </dd>

<dt><b>force-stop</b>
</dt>
<dd>Same as <i>down</i>, but wait up to 7 seconds for the service to become down. Then
report the status, and on timeout send the service the <i>kill</i> command. </dd>

<dt><b>force-reload</b>
</dt>
<dd>Send the service the <i>term</i> and <i>cont</i> commands, and wait up to 7 seconds for
the service to restart. Then report the status, and on timeout send the
service the <i>kill</i> command. </dd>

<dt><b>force-restart</b> </dt>
<dd>Send the service the <i>term</i>, <i>cont</i> and
<i>up</i> commands, and wait up to 7 seconds for the service to restart. Then report
the status, and on timeout send the service the <i>kill</i> command. If the script
<i>./check</i> exists in the service directory, <b>sv</b> runs this script to check whether
the service is up and available again; it&rsquo;s considered to be available if
<i>./check</i> exits with 0. </dd>

<dt><b>force-shutdown</b> </dt>
<dd>Same as <i>exit</i>, but wait up to 7 seconds
for the <i><b>runsv</b>(8)</i> process to terminate. Then report the status, and on timeout
send the service the <i>kill</i> command. </dd>
</dl>

<h3><a name='sect5'>Additional Commands</a></h3>

<dl>

<dt><b>check</b> </dt>
<dd>Check for the
service to be in the state that&rsquo;s been requested. Wait up to 7 seconds for
the service to reach the requested state, then report the status or timeout.
If the requested state of the service is <i>up</i>, and the script <i>./check</i> exists
in the service directory, <b>sv</b> runs this script to check whether the service
is up and running; it&rsquo;s considered to be up if <i>./check</i> exits with 0. </dd>
</dl>

<h2><a name='sect6'>Options</a></h2>

<dl>

<dt><b>-v</b>
</dt>
<dd>If the <i>command</i> is up, down, term, once, cont, or exit, then wait up to
7 seconds for the command to take effect. Then report the status or timeout.
</dd>

<dt><b>-w <i>sec</b> </i></dt>
<dd>Override the default timeout of 7 seconds with <i>sec</i> seconds. This option
implies <i>-v</i>. </dd>
</dl>

<h2><a name='sect7'>Environment</a></h2>

<dl>

<dt><b>SVDIR</b> </dt>
<dd>The environment variable $SVDIR overrides the
default services directory <i>/service/</i>. </dd>

<dt><b>SVWAIT</b> </dt>
<dd>The environment variable
$SVWAIT overrides the default 7 seconds to wait for a command to take effect.
It is overridden by the -w option. </dd>
</dl>

<h2><a name='sect8'>Exit Codes</a></h2>
<b>sv</b> exits 0, if the <i>command</i> was
successfully sent to all <i>services</i>, and, if it was told to wait, the <i>command</i>
has taken effect to all services. <p>
For each <i>service</i> that caused an error
(e.g. the directory is not controlled by a <i><b>runsv</b>(8)</i> process, or <b>sv</b> timed
out while waiting), <b>sv</b> increases the exit code by one and exits non zero.
The maximum is 99. <b>sv</b> exits 100 on error. <p>
If <b>sv</b> is called with a base name
other than <b>sv</b>, it exits 1 on timeout or trouble sending the command. If
the <i>command</i> is <b>status</b>, it exits 3 if the service is down, and 4 if the
status is unknown. It exits 2 on wrong usage, and 151 on error. 
<h2><a name='sect9'>See Also</a></h2>
<i>runsv(8)</i>,
<i>chpst(8)</i>, <i>svlogd(8)</i>, <i>runsvdir(8)</i>, <i>runsvchdir(8)</i>, <i>runit(8)</i>, <i>runit-init(8)</i>
<p>
<i>http://smarden.org/runit/</i> 
<h2><a name='sect10'>Author</a></h2>
Gerrit Pape &lt;pape@smarden.org&gt; <p>

<hr><p>
<a name='toc'><b>Table of Contents</b></a><p>
<ul>
<li><a name='toc0' href='#sect0'>Name</a></li>
<li><a name='toc1' href='#sect1'>Synopsis</a></li>
<li><a name='toc2' href='#sect2'>Description</a></li>
<li><a name='toc3' href='#sect3'>Commands</a></li>
<ul>
<li><a name='toc4' href='#sect4'>Commands compatible to LSB init script actions</a></li>
<li><a name='toc5' href='#sect5'>Additional Commands</a></li>
</ul>
<li><a name='toc6' href='#sect6'>Options</a></li>
<li><a name='toc7' href='#sect7'>Environment</a></li>
<li><a name='toc8' href='#sect8'>Exit Codes</a></li>
<li><a name='toc9' href='#sect9'>See Also</a></li>
<li><a name='toc10' href='#sect10'>Author</a></li>
</ul>
</body>
</html>