runit

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit b626c9c8691d37dfbd4d21a39210def7eb83fca6
parent 4a75ad1fc91030fae5325cfd38546836f2d96ed2
Author: Gerrit Pape <pape@smarden.org>
Date:   Tue, 23 Sep 2003 08:13:27 +0000

html.

Diffstat:
Mdoc/chpst.8.html | 213++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mdoc/runit-init.8.html | 109++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mdoc/runit.8.html | 119++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mdoc/runsv.8.html | 223+++++++++++++++++++++++++++++++++++++++----------------------------------------
Mdoc/runsvchdir.8.html | 91++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mdoc/runsvctrl.8.html | 177+++++++++++++++++++++++++++++++++++++++----------------------------------------
Mdoc/runsvdir.8.html | 111++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mdoc/runsvstat.8.html | 115++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mdoc/svlogd.8.html | 351++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mdoc/svwaitdown.8.html | 139++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mdoc/svwaitup.8.html | 123++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mdoc/utmpset.8.html | 105++++++++++++++++++++++++++++++++++++++++---------------------------------------
12 files changed, 942 insertions(+), 934 deletions(-)

diff --git a/doc/chpst.8.html b/doc/chpst.8.html @@ -1,126 +1,127 @@ -<HTML> -<HEAD> -<TITLE>chpst(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> +<html> +<head> +<title>chpst(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> + +<h2><a name='sect0' href='#toc0'>Name</a></h2> chpst - runs a program with a changed process state -<H2><A NAME="sect1">Synopsis</A></H2> -<B>chpst</B> [-vP012] -[-u <I>user</I>] [-U <I>user</I>] [-e <I>dir</I>] [-l|-L <I>lock</I>] [-m <I>bytes</I>] [-o <I>n</I>] [-p <I>n</I>] [-f <I>bytes</I>] [-c -<I>bytes</I>] <I>prog</I> -<H2><A NAME="sect2">Description</A></H2> -<I>prog</I> consists of one or more arguments. <P> -<B>chpst</B> changes -the process state according to the given options, and runs <I>prog</I>. -<H2><A NAME="sect3">Options</A></H2> - -<DL> - -<DT><B>-u -<I>user[:group]</B> </I></DT> -<DD>setuidgid. Set uid and gid to the <I>user</I>'s uid and gid. If <I>user</I> -is followed by a colon and a <I>group</I>, set the gid to <I>group</I>'s gid instead of -<I>user</I>'s gid. All supplementary groups are removed. </DD> - -<DT><B>-U <I>user[:group]</B> </I></DT> -<DD>envuidgid. -Set the environment variables $UID and $GID to the <I>user</I>'s uid and gid. If -<I>user</I> is followed by a colon and a <I>group</I>, set $GID to the <I>group</I>'s gid instead -of <I>user</I>'s gid. </DD> - -<DT><B>-e <I>dir</B> </I></DT> -<DD>envdir. Set various environment variables as specified -by files in the directory <I>dir</I>: If <I>dir</I> contains a file named <I>k</I> whose first -line is <I>v</I>, <B>chpst</B> removes the environment variable <I>k</I> if it exists, and then -adds the environment variable <I>k</I> with the value <I>v</I>. The name <I>k</I> must not contain -=. Spaces and tabs at the end of <I>v</I> are removed, and nulls in <I>v</I> are changed -to newlines. If the file <I>k</I> is empty (0 bytes long), <B>chpst</B> removes the environment -variable <I>k</I> if it exists, without adding a new variable. </DD> - -<DT><B>-l <I>lock</B> </I></DT> -<DD>lock. Open -the file <I>lock</I> for writing, and obtain an exclusive lock on it. <I>lock</I> will -be created if it does not exist. If <I>lock</I> is locked by another process, wait -until a new lock can be obtained. </DD> - -<DT><B>-L <I>lock</B> </I></DT> -<DD>The same as -l, but fail immediately -if <I>lock</I> is locked by another process. </DD> - -<DT><B>-m <I>bytes</B> </I></DT> -<DD>limit memory. Limit the data +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>chpst</b> [-vP012] +[-u <i>user</i>] [-U <i>user</i>] [-e <i>dir</i>] [-l|-L <i>lock</i>] [-m <i>bytes</i>] [-o <i>n</i>] [-p <i>n</i>] [-f <i>bytes</i>] [-c +<i>bytes</i>] <i>prog</i> +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<i>prog</i> consists of one or more arguments. <p> +<b>chpst</b> changes +the process state according to the given options, and runs <i>prog</i>. +<h2><a name='sect3' href='#toc3'>Options</a></h2> + +<dl> + +<dt><b>-u +<i>user[:group]</b> </i></dt> +<dd>setuidgid. Set uid and gid to the <i>user</i>&rsquo;s uid and gid. If <i>user</i> +is followed by a colon and a <i>group</i>, set the gid to <i>group</i>&rsquo;s gid instead of +<i>user</i>&rsquo;s gid. All supplementary groups are removed. </dd> + +<dt><b>-U <i>user[:group]</b> </i></dt> +<dd>envuidgid. +Set the environment variables $UID and $GID to the <i>user</i>&rsquo;s uid and gid. If +<i>user</i> is followed by a colon and a <i>group</i>, set $GID to the <i>group</i>&rsquo;s gid instead +of <i>user</i>&rsquo;s gid. </dd> + +<dt><b>-e <i>dir</b> </i></dt> +<dd>envdir. Set various environment variables as specified +by files in the directory <i>dir</i>: If <i>dir</i> contains a file named <i>k</i> whose first +line is <i>v</i>, <b>chpst</b> removes the environment variable <i>k</i> if it exists, and then +adds the environment variable <i>k</i> with the value <i>v</i>. The name <i>k</i> must not contain +=. Spaces and tabs at the end of <i>v</i> are removed, and nulls in <i>v</i> are changed +to newlines. If the file <i>k</i> is empty (0 bytes long), <b>chpst</b> removes the environment +variable <i>k</i> if it exists, without adding a new variable. </dd> + +<dt><b>-l <i>lock</b> </i></dt> +<dd>lock. Open +the file <i>lock</i> for writing, and obtain an exclusive lock on it. <i>lock</i> will +be created if it does not exist. If <i>lock</i> is locked by another process, wait +until a new lock can be obtained. </dd> + +<dt><b>-L <i>lock</b> </i></dt> +<dd>The same as -l, but fail immediately +if <i>lock</i> is locked by another process. </dd> + +<dt><b>-m <i>bytes</b> </i></dt> +<dd>limit memory. Limit the data segment, stack segment, locked physical pages, and total of all segment -per process to <I>bytes</I> bytes each. </DD> +per process to <i>bytes</i> bytes each. </dd> -<DT><B>-o <I>n</B> </I></DT> -<DD>limit open files. Limit the number of -open file descriptors per process to <I>n</I>. </DD> +<dt><b>-o <i>n</b> </i></dt> +<dd>limit open files. Limit the number of +open file descriptors per process to <i>n</i>. </dd> -<DT><B>-p <I>n</B> </I></DT> -<DD>limit processes. Limit the number -of processes per uid to <I>n</I>. </DD> +<dt><b>-p <i>n</b> </i></dt> +<dd>limit processes. Limit the number +of processes per uid to <i>n</i>. </dd> -<DT><B>-f <I>bytes</B> </I></DT> -<DD>limit output size. Limit the output file -size to <I>bytes</I> bytes. </DD> +<dt><b>-f <i>bytes</b> </i></dt> +<dd>limit output size. Limit the output file +size to <i>bytes</i> bytes. </dd> -<DT><B>-c <I>bytes</B> </I></DT> -<DD>limit core size. Limit the core file size to -<I>bytes</I> bytes. </DD> +<dt><b>-c <i>bytes</b> </i></dt> +<dd>limit core size. Limit the core file size to +<i>bytes</i> bytes. </dd> -<DT><B>-v</B> </DT> -<DD>verbose. Print warnings about limits unsupported by the system -to standard error. </DD> +<dt><b>-v</b> </dt> +<dd>verbose. Print warnings about limits unsupported by the system +to standard error. </dd> -<DT><B>-P</B> </DT> -<DD>pgrphack. Run <I>prog</I> in a new process group. </DD> +<dt><b>-P</b> </dt> +<dd>pgrphack. Run <i>prog</i> in a new process group. </dd> -<DT><B>-0</B> </DT> -<DD>Close standard -input before running <I>prog</I>. </DD> +<dt><b>-0</b> </dt> +<dd>Close standard +input before running <i>prog</i>. </dd> -<DT><B>-1</B> </DT> -<DD>Close standard output before running <I>prog</I>. </DD> +<dt><b>-1</b> </dt> +<dd>Close standard output before running <i>prog</i>. </dd> -<DT><B>-2</B> -</DT> -<DD>Close standard error before running <I>prog</I>. </DD> -</DL> +<dt><b>-2</b> +</dt> +<dd>Close standard error before running <i>prog</i>. </dd> +</dl> -<H2><A NAME="sect4">Exit Codes</A></H2> -<B>chpst</B> exits 100 when +<h2><a name='sect4' href='#toc4'>Exit Codes</a></h2> +<b>chpst</b> exits 100 when called with wrong options. It prints an error message and exits 111 if it has trouble changing the process state. Otherwise its exit code is the same -as that of <I>prog</I>. -<H2><A NAME="sect5">Emulation</A></H2> -If <B>chpst</B> is called as <B><I>envdir</B>(8)</I>, <B><I>envuidgid</B>(8)</I>, -<B><I>pgrphack</B>(8)</I>, <B><I>setlock</B>(8)</I>, <B><I>setuidgid</B>(8)</I>, or <B><I>softlimit</B>(8)</I>, it emulates the +as that of <i>prog</i>. +<h2><a name='sect5' href='#toc5'>Emulation</a></h2> +If <b>chpst</b> is called as <i><b>envdir</b>(8)</i>, <i><b>envuidgid</b>(8)</i>, +<i><b>pgrphack</b>(8)</i>, <i><b>setlock</b>(8)</i>, <i><b>setuidgid</b>(8)</i>, or <i><b>softlimit</b>(8)</i>, it emulates the functionality of these programs from the daemontools package respectively. -<H2><A NAME="sect6">See Also</A></H2> -<I>runsv(8)</I>, <I>runsvctrl(8)</I>, <I>runsvstat(8)</I>, <I>runsvdir(8)</I>, <I>setsid(2)</I> <P> - <I>http://smarden.org/runit/</I><BR> - <I>http://cr.yp.to/daemontools.html</I><BR> +<h2><a name='sect6' href='#toc6'>See Also</a></h2> +<i>runsv(8)</i>, <i>runsvctrl(8)</i>, <i>runsvstat(8)</i>, <i>runsvdir(8)</i>, <i>setsid(2)</i> <p> + <i>http://smarden.org/runit/</i><br> + <i>http://cr.yp.to/daemontools.html</i><br> -<H2><A NAME="sect7">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">Options</A></LI> -<LI><A NAME="toc4" HREF="#sect4">Exit Codes</A></LI> -<LI><A NAME="toc5" HREF="#sect5">Emulation</A></LI> -<LI><A NAME="toc6" HREF="#sect6">See Also</A></LI> -<LI><A NAME="toc7" HREF="#sect7">Author</A></LI> -</UL> -</BODY></HTML> +<h2><a name='sect7' href='#toc7'>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'>Options</a></li> +<li><a name='toc4' href='#sect4'>Exit Codes</a></li> +<li><a name='toc5' href='#sect5'>Emulation</a></li> +<li><a name='toc6' href='#sect6'>See Also</a></li> +<li><a name='toc7' href='#sect7'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/runit-init.8.html b/doc/runit-init.8.html @@ -1,59 +1,60 @@ -<HTML> -<HEAD> -<TITLE>runit-init(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> +<html> +<head> +<title>runit-init(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> + +<h2><a name='sect0' href='#toc0'>Name</a></h2> init - a UNIX process no 1 -<H2><A NAME="sect1">Synopsis</A></H2> -<B>init</B> [ 0 | 6 ] -<H2><A NAME="sect2">Description</A></H2> -<B>runit-init</B> -is the first process the kernel starts. If <B>runit-init</B> is started as process -no 1, it runs and replaces itself with <B><I>runit</B>(8)</I>. <P> -If <B>runit-init</B> is started -while the system is up, it must be either called as <B>init 0</B> or <B>init 6:</B> -<DL> - -<DT><B>init -0</B> </DT> -<DD>tells the Unix process no 1 to shutdown and halt the system. To signal -<B><I>runit</B>(8)</I> the system halt request, <B>runit-init</B> removes all permissions of -the file <I>/etc/runit/reboot</I> (chmod 0), and sets the execute by owner permission -of the file <I>/etc/runit/stopit</I> (chmod 100). Then a CONT signal is sent to -<B><I>runit</B>(8)</I>. </DD> - -<DT><B>init 6</B> </DT> -<DD>tells the Unix process no 1 to shutdown and reboot the -system. To signal <B><I>runit</B>(8)</I> the system reboot request, <B>runit-init</B> sets the -execute by owner permission of the files <I>/etc/runit/reboot</I> and <I>/etc/runit/stopit</I> -(chmod 100). Then a CONT signal is sent to <B><I>runit</B>(8)</I>. </DD> -</DL> - -<H2><A NAME="sect3">Exit Codes</A></H2> -<B>runit-init</B> +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>init</b> [ 0 | 6 ] +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<b>runit-init</b> +is the first process the kernel starts. If <b>runit-init</b> is started as process +no 1, it runs and replaces itself with <i><b>runit</b>(8)</i>. <p> +If <b>runit-init</b> is started +while the system is up, it must be either called as <b>init 0</b> or <b>init 6:</b> +<dl> + +<dt><b>init +0</b> </dt> +<dd>tells the Unix process no 1 to shutdown and halt the system. To signal +<i><b>runit</b>(8)</i> the system halt request, <b>runit-init</b> removes all permissions of +the file <i>/etc/runit/reboot</i> (chmod 0), and sets the execute by owner permission +of the file <i>/etc/runit/stopit</i> (chmod 100). Then a CONT signal is sent to +<i><b>runit</b>(8)</i>. </dd> + +<dt><b>init 6</b> </dt> +<dd>tells the Unix process no 1 to shutdown and reboot the +system. To signal <i><b>runit</b>(8)</i> the system reboot request, <b>runit-init</b> sets the +execute by owner permission of the files <i>/etc/runit/reboot</i> and <i>/etc/runit/stopit</i> +(chmod 100). Then a CONT signal is sent to <i><b>runit</b>(8)</i>. </dd> +</dl> + +<h2><a name='sect3' href='#toc3'>Exit Codes</a></h2> +<b>runit-init</b> returns 111 on error, 0 in all other cases. -<H2><A NAME="sect4">See Also</A></H2> -<I>runit(8)</I>, <I>runsv(8)</I>, -<I>runsvctrl(8)</I>, <I>runsvstat(8)</I>, <I>runsvdir(8)</I>, <I>runsvchdir(8)</I>, <I>svlogd(8)</I>, <I>utmpset(8)</I> -<P> -<I>http://smarden.org/runit/</I> -<H2><A NAME="sect5">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">Exit Codes</A></LI> -<LI><A NAME="toc4" HREF="#sect4">See Also</A></LI> -<LI><A NAME="toc5" HREF="#sect5">Author</A></LI> -</UL> -</BODY></HTML> +<h2><a name='sect4' href='#toc4'>See Also</a></h2> +<i>runit(8)</i>, <i>runsv(8)</i>, +<i>runsvctrl(8)</i>, <i>runsvstat(8)</i>, <i>runsvdir(8)</i>, <i>runsvchdir(8)</i>, <i>svlogd(8)</i>, <i>utmpset(8)</i> +<p> +<i>http://smarden.org/runit/</i> +<h2><a name='sect5' href='#toc5'>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'>Exit Codes</a></li> +<li><a name='toc4' href='#sect4'>See Also</a></li> +<li><a name='toc5' href='#sect5'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/runit.8.html b/doc/runit.8.html @@ -1,73 +1,74 @@ -<HTML> -<HEAD> -<TITLE>runit(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> +<html> +<head> +<title>runit(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> -<H2><A NAME="sect0">Name</A></H2> +<h2><a name='sect0' href='#toc0'>Name</a></h2> runit - a UNIX process no 1 -<H2><A NAME="sect1">Synopsis</A></H2> -<B>runit</B> -<H2><A NAME="sect2">Description</A></H2> -<B>runit</B> must be run -as Unix process no 1. It performs the system's booting, running, and shutdown +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>runit</b> +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<b>runit</b> must be run +as Unix process no 1. It performs the system&rsquo;s booting, running, and shutdown in three Stages: -<H2><A NAME="sect3">Stage 1</A></H2> -<B>runit</B> runs <I>/etc/runit/1</I> and waits for it to terminate. -The system's one time tasks are done here. <I>/etc/runit/1</I> has full control -of <I>/dev/console</I> to be able to start an emergency shell if the one time -initialization tasks fail. If <I>/etc/runit/1</I> itself crashes, <B>runit</B> will skip +<h2><a name='sect3' href='#toc3'>Stage 1</a></h2> +<b>runit</b> runs <i>/etc/runit/1</i> and waits for it to terminate. +The system&rsquo;s one time tasks are done here. <i>/etc/runit/1</i> has full control +of <i>/dev/console</i> to be able to start an emergency shell if the one time +initialization tasks fail. If <i>/etc/runit/1</i> itself crashes, <b>runit</b> will skip stage 2 and enter stage 3. -<H2><A NAME="sect4">Stage 2</A></H2> -<B>runit</B> runs <I>/etc/runit/2</I>, which should +<h2><a name='sect4' href='#toc4'>Stage 2</a></h2> +<b>runit</b> runs <i>/etc/runit/2</i>, which should not return until system shutdown; if it crashes, it will be restarted. Normally -<I>/etc/runit/2</I> starts <B><I>runsvdir</B>(8)</I>. <B>runit</B> is able to handle the ctrl-alt-del +<i>/etc/runit/2</i> starts <i><b>runsvdir</b>(8)</i>. <b>runit</b> is able to handle the ctrl-alt-del keyboard request in Stage 2, see below. -<H2><A NAME="sect5">Stage 3</A></H2> -If <B>runit</B> is told to shutdown +<h2><a name='sect5' href='#toc5'>Stage 3</a></h2> +If <b>runit</b> is told to shutdown the system, or the Stage 2 returns without errors, it terminates Stage -2 if it is running, and runs <I>/etc/runit/3</I>. The systems tasks to shutdown -and halt or reboot are done here. If Stage 3 returns, <B>runit</B> checks if the -file <I>/etc/runit/reboot</I> exists and has the execute by owner permission set. -If so, the system is rebooted, it's halted otherwise. -<H2><A NAME="sect6">Ctrl-alt-del</A></H2> -If <B>runit</B> -receives the ctrl-alt-del keyboard request and the file <I>/etc/runit/ctrlaltdel</I> -exists and has the execute by owner permission set, <B>runit</B> runs <I>/etc/runit/ctrlaltdel</I>, +2 if it is running, and runs <i>/etc/runit/3</i>. The systems tasks to shutdown +and halt or reboot are done here. If Stage 3 returns, <b>runit</b> checks if the +file <i>/etc/runit/reboot</i> exists and has the execute by owner permission set. +If so, the system is rebooted, it&rsquo;s halted otherwise. +<h2><a name='sect6' href='#toc6'>Ctrl-alt-del</a></h2> +If <b>runit</b> +receives the ctrl-alt-del keyboard request and the file <i>/etc/runit/ctrlaltdel</i> +exists and has the execute by owner permission set, <b>runit</b> runs <i>/etc/runit/ctrlaltdel</i>, waits for it to terminate, and then sends itself a CONT signal. -<H2><A NAME="sect7">Signals</A></H2> -<B>runit</B> -only accepts signals in Stage 2. <P> -If <B>runit</B> receives a CONT signal and the -file <I>/etc/runit/stopit</I> exists and has the execute by owner permission set, -<B>runit</B> is told to shutdown the system. <P> -if <B>runit</B> receives an INT signal, a +<h2><a name='sect7' href='#toc7'>Signals</a></h2> +<b>runit</b> +only accepts signals in Stage 2. <p> +If <b>runit</b> receives a CONT signal and the +file <i>/etc/runit/stopit</i> exists and has the execute by owner permission set, +<b>runit</b> is told to shutdown the system. <p> +if <b>runit</b> receives an INT signal, a ctrl-alt-del keyboard request is triggered. -<H2><A NAME="sect8">See Also</A></H2> -<I>runit-init(8)</I>, <I>runsvdir(8)</I>, -<I>runsvchdir(8)</I>, <I>runsv(8)</I>, <I>runsvctrl(8)</I>, <I>runsvstat(8)</I>, <I>svwaitdown(8)</I>, <I>svwaitup(8)</I>, -<I>svlogd(8)</I>, <I>utmpset(8)</I> <P> -<I>http://smarden.org/runit/</I> -<H2><A NAME="sect9">Author</A></H2> +<h2><a name='sect8' href='#toc8'>See Also</a></h2> +<i>runit-init(8)</i>, <i>runsvdir(8)</i>, +<i>runsvchdir(8)</i>, <i>runsv(8)</i>, <i>runsvctrl(8)</i>, <i>runsvstat(8)</i>, <i>svwaitdown(8)</i>, <i>svwaitup(8)</i>, +<i>svlogd(8)</i>, <i>utmpset(8)</i> <p> +<i>http://smarden.org/runit/</i> +<h2><a name='sect9' href='#toc9'>Author</a></h2> Gerrit Pape &lt;pape@smarden.org&gt; -<P> +<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">Stage 1</A></LI> -<LI><A NAME="toc4" HREF="#sect4">Stage 2</A></LI> -<LI><A NAME="toc5" HREF="#sect5">Stage 3</A></LI> -<LI><A NAME="toc6" HREF="#sect6">Ctrl-alt-del</A></LI> -<LI><A NAME="toc7" HREF="#sect7">Signals</A></LI> -<LI><A NAME="toc8" HREF="#sect8">See Also</A></LI> -<LI><A NAME="toc9" HREF="#sect9">Author</A></LI> -</UL> -</BODY></HTML> +<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'>Stage 1</a></li> +<li><a name='toc4' href='#sect4'>Stage 2</a></li> +<li><a name='toc5' href='#sect5'>Stage 3</a></li> +<li><a name='toc6' href='#sect6'>Ctrl-alt-del</a></li> +<li><a name='toc7' href='#sect7'>Signals</a></li> +<li><a name='toc8' href='#sect8'>See Also</a></li> +<li><a name='toc9' href='#sect9'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/runsv.8.html b/doc/runsv.8.html @@ -1,140 +1,139 @@ -<HTML> -<HEAD> -<TITLE>runsv(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> +<html> +<head> +<title>runsv(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> + +<h2><a name='sect0' href='#toc0'>Name</a></h2> runsv - starts and monitors a service and optionally an appendant log service -<H2><A NAME="sect1">Synopsis</A></H2> -<B>runsv</B> <I>service</I> -<H2><A NAME="sect2">Description</A></H2> -<I>service</I> must be a directory. <P> -<B>runsv</B> -switches to the directory <I>service</I> and starts ./run. if ./run exits and ./finish -exists, <B>runsv</B> starts ./finish. If ./finish doesn't exist or ./finish exits, -<B>runsv</B> restarts ./run. <P> -If ./run or ./finish exit immediately, <B>runsv</B> waits a -second before starting ./finish or restarting ./run. <P> -If the file <I>service</I>/down -exists, <B>runsv</B> does not start ./run immediately. The control interface (see -below) can be used to start the service and to give other commands to <B>runsv</B>. -<P> -If the directory <I>service</I>/log exists, <B>runsv</B> creates a pipe, redirects <I>service</I>/run's -and <I>service</I>/finish's standard output to the pipe, switches to the directory -<I>service</I>/log and starts ./run (and ./finish) exactly as described above for -the <I>service</I> directory. The standard input of the log service a redirected -to read from the pipe. <P> -<B>runsv</B> maintains status information in a binary format -compatible to <B><I>supervise</B>(8)</I> in <I>service</I>/supervise/status and <I>service</I>/log/supervise/status, -and in a human-readable format in <I>service</I>/supervise/stat, <I>service</I>/log/supervise/stat, -<I>service</I>/supervise/pid, <I>service</I>/log/supervise/pid. -<H2><A NAME="sect3">Control</A></H2> +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>runsv</b> <i>service</i> +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<i>service</i> must be a directory. <p> +<b>runsv</b> +switches to the directory <i>service</i> and starts ./run. if ./run exits and ./finish +exists, <b>runsv</b> starts ./finish. If ./finish doesn&rsquo;t exist or ./finish exits, +<b>runsv</b> restarts ./run. <p> +If ./run or ./finish exit immediately, <b>runsv</b> waits a +second before starting ./finish or restarting ./run. <p> +If the file <i>service</i>/down +exists, <b>runsv</b> does not start ./run immediately. The control interface (see +below) can be used to start the service and to give other commands to <b>runsv</b>. +<p> +If the directory <i>service</i>/log exists, <b>runsv</b> creates a pipe, redirects <i>service</i>/run&rsquo;s +and <i>service</i>/finish&rsquo;s standard output to the pipe, switches to the directory +<i>service</i>/log and starts ./run (and ./finish) exactly as described above for +the <i>service</i> directory. The standard input of the log service a redirected +to read from the pipe. <p> +<b>runsv</b> maintains status information in a binary format +compatible to <i><b>supervise</b>(8)</i> in <i>service</i>/supervise/status and <i>service</i>/log/supervise/status, +and in a human-readable format in <i>service</i>/supervise/stat, <i>service</i>/log/supervise/stat, +<i>service</i>/supervise/pid, <i>service</i>/log/supervise/pid. +<h2><a name='sect3' href='#toc3'>Control</a></h2> The named pipes -<I>service</I>/supervise/control, and (optionally) <I>service</I>/log/supervise/control -are provided to give commands to <B>runsv</B>. You can use <B><I>svc</B>(8)</I> to control the +<i>service</i>/supervise/control, and (optionally) <i>service</i>/log/supervise/control +are provided to give commands to <b>runsv</b>. You can use <i><b>svc</b>(8)</i> to control the service or just write one of the following characters to the named pipe: -<DL> +<dl> -<DT><B>u</B> </DT> -<DD>Up. If the service is not running, start it. If the service stops, restart -it. </DD> +<dt><b>u</b> </dt> +<dd>Up. If the service is not running, start it. If the service stops, restart +it. </dd> -<DT><B>d</B> </DT> -<DD>Down. If the service is running, send it a TERM signal. If ./run exits, -start ./finish if it exists. After it stops, do not restart service. </DD> +<dt><b>d</b> </dt> +<dd>Down. If the service is running, send it a TERM signal. If ./run exits, +start ./finish if it exists. After it stops, do not restart service. </dd> -<DT><B>o</B> </DT> -<DD>Once. -If the service is not running, start it. Do not restart it if it stops. </DD> +<dt><b>o</b> </dt> +<dd>Once. +If the service is not running, start it. Do not restart it if it stops. </dd> -<DT><B>p</B> -</DT> -<DD>Pause. If the service is running, send it a STOP signal. </DD> +<dt><b>p</b> +</dt> +<dd>Pause. If the service is running, send it a STOP signal. </dd> -<DT><B>c</B> </DT> -<DD>Continue. If the -service is running, send it a CONT signal. </DD> +<dt><b>c</b> </dt> +<dd>Continue. If the +service is running, send it a CONT signal. </dd> -<DT><B>h</B> </DT> -<DD>Hangup. If the service is running, -send it a HUP signal. </DD> +<dt><b>h</b> </dt> +<dd>Hangup. If the service is running, +send it a HUP signal. </dd> -<DT><B>a</B> </DT> -<DD>Alarm. If the service is running, send it a ALRM -signal. </DD> +<dt><b>a</b> </dt> +<dd>Alarm. If the service is running, send it a ALRM +signal. </dd> -<DT><B>i</B> </DT> -<DD>Interrupt. If the service is running, send it a INT signal. </DD> +<dt><b>i</b> </dt> +<dd>Interrupt. If the service is running, send it a INT signal. -<DT><B>1</B> </DT> -<DD>User-defined 1. -If the service is running, send it a USR1 signal. </DD> +<dt><b>1</b> </dt> +<dd>User-defined 1. If the service is running, send it a USR1 signal. </dd> -<DT><B>2</B> </DT> -<DD>User-defined 2. -If the service is running, send it a USR2 signal. </DD> +<dt><b>2</b> </dt> +<dd>User-defined 2. If the service is running, send it a USR2 signal. </dd> -<DT><B>t</B> </DT> -<DD>Terminate. If the service is -running, send it a TERM signal. </DD> +<dt><b>t</b> </dt> +<dd>Terminate. If the service is +running, send it a TERM signal. </dd> -<DT><B>k</B> </DT> -<DD>Kill. If the service is running, send it -a KILL signal. </DD> +<dt><b>k</b> </dt> +<dd>Kill. If the service is running, send it +a KILL signal. </dd> -<DT><B>x or <B>e</B> </B></DT> -<DD>Exit. If the service is running, send it a TERM signal. +<dt><b>x or <b>e</b> </b></dt> +<dd>Exit. If the service is running, send it a TERM signal. Do not restart the service. If the service is down, and no log service exists, -<B>runsv</B> exits. If the service is down and a log service exists, <B>runsv</B> closes +<b>runsv</b> exits. If the service is down and a log service exists, <b>runsv</b> closes the standard input of the log service, and waits for it to terminate. If -the log service is down, <B>runsv</B> exits. This command is ignored if it is given -to <I>service</I>/log/supervise/control. </DD> -</DL> -<P> +the log service is down, <b>runsv</b> exits. This command is ignored if it is given +to <i>service</i>/log/supervise/control. </dd> +</dl> +<p> For example, to send a TERM signal to -/service/socklog-unix, either do # svc -t /service/socklog-unix<BR> - or<BR> - # echo -n t &gt;/service/socklog-unix/supervise/control<BR> - <P> -If <B><I>echo</B>(1)</I> on your systems does not provide the -n option, leave it out, -<B>runsv</B> ignores unknown characters written to the control pipe. <B><I>echo</B>(1)</I> usually -blocks if no <B>runsv</B> process is running in the service directory. -<H2><A NAME="sect4">Signals</A></H2> +/service/socklog-unix, either do # svc -t /service/socklog-unix<br> + or<br> + # echo -n t &gt;/service/socklog-unix/supervise/control<br> + <p> +If <i><b>echo</b>(1)</i> on your systems does not provide the -n option, leave it out, +<b>runsv</b> ignores unknown characters written to the control pipe. <i><b>echo</b>(1)</i> usually +blocks if no <b>runsv</b> process is running in the service directory. +<h2><a name='sect4' href='#toc4'>Signals</a></h2> If -<B>runsv</B> receives a TERM signal, it acts as if the character x was written +<b>runsv</b> receives a TERM signal, it acts as if the character x was written to the control pipe. -<H2><A NAME="sect5">Exit Codes</A></H2> -<B>runsv</B> exits 111 on an error on startup or -if another <B>runsv</B> is running in <I>service</I>. <P> -<B>runsv</B> exits 0 if it was told to +<h2><a name='sect5' href='#toc5'>Exit Codes</a></h2> +<b>runsv</b> exits 111 on an error on startup or +if another <b>runsv</b> is running in <i>service</i>. <p> +<b>runsv</b> exits 0 if it was told to exit. -<H2><A NAME="sect6">See Also</A></H2> -<I>runsvctrl(8)</I>, <I>runsvstat(8)</I>, <I>runit(8)</I>, <I>runit-init(8)</I>, <I>runsvdir(8)</I>, -<I>runsvchdir(8)</I>, <I>svlogd(8)</I>, <I>svwaitdown(8)</I>, <I>svwaitup(8)</I>, <I>svc(8)</I>, <I>supervise(8)</I> -<P> - <I>http://smarden.org/runit/</I><BR> - <I>http://cr.yp.to/daemontools.html</I><BR> +<h2><a name='sect6' href='#toc6'>See Also</a></h2> +<i>runsvctrl(8)</i>, <i>runsvstat(8)</i>, <i>runit(8)</i>, <i>runit-init(8)</i>, <i>runsvdir(8)</i>, +<i>runsvchdir(8)</i>, <i>svlogd(8)</i>, <i>svwaitdown(8)</i>, <i>svwaitup(8)</i>, <i>svc(8)</i>, <i>supervise(8)</i> +<p> + <i>http://smarden.org/runit/</i><br> + <i>http://cr.yp.to/daemontools.html</i><br> -<H2><A NAME="sect7">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">Control</A></LI> -<LI><A NAME="toc4" HREF="#sect4">Signals</A></LI> -<LI><A NAME="toc5" HREF="#sect5">Exit Codes</A></LI> -<LI><A NAME="toc6" HREF="#sect6">See Also</A></LI> -<LI><A NAME="toc7" HREF="#sect7">Author</A></LI> -</UL> -</BODY></HTML> +<h2><a name='sect7' href='#toc7'>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'>Control</a></li> +<li><a name='toc4' href='#sect4'>Signals</a></li> +<li><a name='toc5' href='#sect5'>Exit Codes</a></li> +<li><a name='toc6' href='#sect6'>See Also</a></li> +<li><a name='toc7' href='#sect7'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/runsvchdir.8.html b/doc/runsvchdir.8.html @@ -1,52 +1,53 @@ -<HTML> -<HEAD> -<TITLE>runsvchdir(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> +<html> +<head> +<title>runsvchdir(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> -<H2><A NAME="sect0">Name</A></H2> -runsvchdir - change service directory of <I>runsvdir(8)</I> -<H2><A NAME="sect1">Synopsis</A></H2> -<B>runsvchdir</B> -<I>dir</I> -<H2><A NAME="sect2">Description</A></H2> -<I>dir</I> is a directory for the use with <B><I>runsvdir</B>(8)</I>. If <I>dir</I> does -not start with a slash, it is searched in /etc/runit/runsvdir/. <I>dir</I> must -not start with a dot. <P> -<B>runsvchdir</B> switches to the directory <I>/etc/runit/runsvdir</I>, -copies <I>current</I> to <I>previous</I>, and replaces <I>current</I> with a symlink pointing -to <I>dir</I>. <P> -Normally <I>/service</I> is a symlink to <I>current</I>, and <B><I>runsvdir</B>(8)</I> is running -<I>/service</I>. -<H2><A NAME="sect3">Exit Codes</A></H2> -<B>runsvchdir</B> prints an error message and exits 111 on -error. <B>runsvchdir</B> exits 0 on success. -<H2><A NAME="sect4">Files</A></H2> - /etc/runit/runsvdir/previous<BR> - /etc/runit/runsvdir/current<BR> - /etc/runit/runsvdir/current.new<BR> +<h2><a name='sect0' href='#toc0'>Name</a></h2> +runsvchdir - change service directory of <i>runsvdir(8)</i> +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>runsvchdir</b> +<i>dir</i> +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<i>dir</i> is a directory for the use with <i><b>runsvdir</b>(8)</i>. If <i>dir</i> does +not start with a slash, it is searched in /etc/runit/runsvdir/. <i>dir</i> must +not start with a dot. <p> +<b>runsvchdir</b> switches to the directory <i>/etc/runit/runsvdir</i>, +copies <i>current</i> to <i>previous</i>, and replaces <i>current</i> with a symlink pointing +to <i>dir</i>. <p> +Normally <i>/service</i> is a symlink to <i>current</i>, and <i><b>runsvdir</b>(8)</i> is running +<i>/service</i>. +<h2><a name='sect3' href='#toc3'>Exit Codes</a></h2> +<b>runsvchdir</b> prints an error message and exits 111 on +error. <b>runsvchdir</b> exits 0 on success. +<h2><a name='sect4' href='#toc4'>Files</a></h2> + /etc/runit/runsvdir/previous<br> + /etc/runit/runsvdir/current<br> + /etc/runit/runsvdir/current.new<br> -<H2><A NAME="sect5">See Also</A></H2> -<I>runsvdir(8)</I>, <I>runsv(8)</I>, <I>runsvctrl(8)</I>, <I>runsvstat(8)</I>, <I>runit(8)</I>, <I>runit-init(8)</I>, -<I>svwaitdown(8)</I>, <I>svwaitup(8)</I> <P> -<I>http://smarden.org/runit/</I> -<H2><A NAME="sect6">Author</A></H2> +<h2><a name='sect5' href='#toc5'>See Also</a></h2> +<i>runsvdir(8)</i>, <i>runsv(8)</i>, <i>runsvctrl(8)</i>, <i>runsvstat(8)</i>, <i>runit(8)</i>, <i>runit-init(8)</i>, +<i>svwaitdown(8)</i>, <i>svwaitup(8)</i> <p> +<i>http://smarden.org/runit/</i> +<h2><a name='sect6' href='#toc6'>Author</a></h2> Gerrit Pape &lt;pape@smarden.org&gt; -<P> +<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">Exit Codes</A></LI> -<LI><A NAME="toc4" HREF="#sect4">Files</A></LI> -<LI><A NAME="toc5" HREF="#sect5">See Also</A></LI> -<LI><A NAME="toc6" HREF="#sect6">Author</A></LI> -</UL> -</BODY></HTML> +<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'>Exit Codes</a></li> +<li><a name='toc4' href='#sect4'>Files</a></li> +<li><a name='toc5' href='#sect5'>See Also</a></li> +<li><a name='toc6' href='#sect6'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/runsvctrl.8.html b/doc/runsvctrl.8.html @@ -1,112 +1,111 @@ -<HTML> -<HEAD> -<TITLE>runsvctrl(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> -runsvctrl - controls a service monitored by <B><I>runsv</B>(8)</I>. -<H2><A NAME="sect1">Synopsis</A></H2> -<B>runsvctrl</B> -<I>command</I> <I>services</I> -<H2><A NAME="sect2">Description</A></H2> -<I>services</I> consists of one or more arguments, -each argument naming a directory used by <B><I>runsv</B>(8)</I>. <I>command</I> is one of up, +<html> +<head> +<title>runsvctrl(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> + +<h2><a name='sect0' href='#toc0'>Name</a></h2> +runsvctrl - controls a service monitored by <i><b>runsv</b>(8)</i>. +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>runsvctrl</b> +<i>command</i> <i>services</i> +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<i>services</i> consists of one or more arguments, +each argument naming a directory used by <i><b>runsv</b>(8)</i>. <i>command</i> is one of up, down, once, pause, cont, hup, alarm, interrupt, 1, 2, term, kill, or exit. -<P> -For each <I>service</I> of <I>services</I>, <B>runsvctrl</B> sends the command <I>command</I> to the -<I>service</I>, which must be controlled by <B><I>runsv</B>(8)</I>. -<H2><A NAME="sect3">Commands</A></H2> +<p> +For each <i>service</i> of <i>services</i>, <b>runsvctrl</b> sends the command <i>command</i> to the +<i>service</i>, which must be controlled by <i><b>runsv</b>(8)</i>. +<h2><a name='sect3' href='#toc3'>Commands</a></h2> -<DL> +<dl> -<DT><B>up</B> </DT> -<DD>If the service -is not running, start it. If the service stops, restart it. </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 +<dt><b>down</b> </dt> +<dd>If the service is running, send it a TERM signal. If ./run exits, start ./finish if it exists. -After it stops, do not restart service. </DD> +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>once</b> </dt> +<dd>If the service is not running, +start it. Do not restart it if it stops. </dd> -<DT><B>pause</B> </DT> -<DD>If the service is running, -send it a STOP signal. </DD> +<dt><b>pause</b> </dt> +<dd>If the service is running, +send it a STOP signal. </dd> -<DT><B>cont</B> </DT> -<DD>If the service is running, send it a CONT signal. -</DD> +<dt><b>cont</b> </dt> +<dd>If the service is running, send it a CONT signal. +</dd> -<DT><B>hup</B> </DT> -<DD>If the service is running, send it a HUP signal. </DD> +<dt><b>hup</b> </dt> +<dd>If the service is running, send it a HUP signal. </dd> -<DT><B>alarm</B> </DT> -<DD>If the service -is running, send it a ALRM signal. </DD> +<dt><b>alarm</b> </dt> +<dd>If the service +is running, send it a ALRM signal. </dd> -<DT><B>interrupt</B> </DT> -<DD>If the service is running, -send it a INT signal. </DD> +<dt><b>interrupt</b> </dt> +<dd>If the service is running, +send it a INT signal. </dd> -<DT><B>1</B> </DT> -<DD>User-defined 1. -If the service is running, send it a USR1 signal. </DD> +<dt><b>1</b> </dt> +<dd>User-defined 1. If the service is running, send it a USR1 signal. </dd> -<DT><B>2</B> </DT> -<DD>User-defined 2. -If the service is running, send it a USR2 signal. </DD> +<dt><b>2</b> </dt> +<dd>User-defined 2. If the service is running, send it a USR2 signal. </dd> -<DT><B>term</B> </DT> -<DD>If the service is running, send it a TERM signal. </DD> +<dt><b>term</b> </dt> +<dd>If the service is running, send it a TERM signal. </dd> -<DT><B>kill</B> </DT> -<DD>If the service -is running, send it a KILL signal. </DD> +<dt><b>kill</b> </dt> +<dd>If the service +is running, send it a KILL signal. </dd> -<DT><B>exit</B> </DT> -<DD>If the service is running, send +<dt><b>exit</b> </dt> +<dd>If the service is running, send it a TERM signal. Do not restart the service. If the service is down, and -no log service exists, <B><I>runsv</B>(8)</I> exits. If the service is down and a log +no log service exists, <i><b>runsv</b>(8)</i> exits. If the service is down and a log service exists, send a TERM signal to the log service. If the log service -is down, <B><I>runsv</B>(8)</I> exits. This command is ignored if it is given to <I>service</I>/log/supervise/control. -</DD> -</DL> -<P> -<B>runsvctrl</B> actually looks only at the first character of <I>command</I>. -<H2><A NAME="sect4">Exit Codes</A></H2> -<B>runsvctrl</B> -exits 0, if the <I>command</I> was sent successfully to all <I>services</I>. <P> +is down, <i><b>runsv</b>(8)</i> exits. This command is ignored if it is given to <i>service</i>/log/supervise/control. +</dd> +</dl> +<p> +<b>runsvctrl</b> actually looks only at the first character of <i>command</i>. +<h2><a name='sect4' href='#toc4'>Exit Codes</a></h2> +<b>runsvctrl</b> +exits 0, if the <i>command</i> was sent successfully to all <i>services</i>. <p> For each -<I>service</I> that caused an error (e.g. the directory is not controlled by a <B><I>runsv</B>(8)</I> -process), <B>runsvctrl</B> increases the exit code by one and exits non zero. The -maximum is 100. <P> -<B>runsvctrl</B> exits 111 on error. -<H2><A NAME="sect5">See Also</A></H2> -<I>runsvstat(8)</I>, <I>runsv(8)</I>, -<I>runit(8)</I>, <I>runit-init(8)</I>, <I>runsvdir(8)</I>, <I>runsvchdir(8)</I>, <I>svlogd(8)</I>, <I>svwaitdown(8)</I>, -<I>svwaitup(8)</I> <P> - <I>http://smarden.org/runit/</I><BR> +<i>service</i> that caused an error (e.g. the directory is not controlled by a <i><b>runsv</b>(8)</i> +process), <b>runsvctrl</b> increases the exit code by one and exits non zero. The +maximum is 100. <p> +<b>runsvctrl</b> exits 111 on error. +<h2><a name='sect5' href='#toc5'>See Also</a></h2> +<i>runsvstat(8)</i>, <i>runsv(8)</i>, +<i>runit(8)</i>, <i>runit-init(8)</i>, <i>runsvdir(8)</i>, <i>runsvchdir(8)</i>, <i>svlogd(8)</i>, <i>svwaitdown(8)</i>, +<i>svwaitup(8)</i> <p> + <i>http://smarden.org/runit/</i><br> -<H2><A NAME="sect6">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> -<LI><A NAME="toc4" HREF="#sect4">Exit Codes</A></LI> -<LI><A NAME="toc5" HREF="#sect5">See Also</A></LI> -<LI><A NAME="toc6" HREF="#sect6">Author</A></LI> -</UL> -</BODY></HTML> +<h2><a name='sect6' href='#toc6'>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> +<li><a name='toc4' href='#sect4'>Exit Codes</a></li> +<li><a name='toc5' href='#sect5'>See Also</a></li> +<li><a name='toc6' href='#sect6'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/runsvdir.8.html b/doc/runsvdir.8.html @@ -1,63 +1,64 @@ -<HTML> -<HEAD> -<TITLE>runsvdir(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> +<html> +<head> +<title>runsvdir(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> -<H2><A NAME="sect0">Name</A></H2> -runsvdir - starts and monitors a collection of <I>runsv(8)</I> processes -<H2><A NAME="sect1">Synopsis</A></H2> -<B>runsvdir</B> -<I>dir</I> [ <I>log</I> ] -<H2><A NAME="sect2">Description</A></H2> -<I>dir</I> must be a directory. <I>log</I> is a space holder for -a readproctitle log and must be at least seven characters long. <P> -<B>runsvdir</B> -starts a <B><I>runsv</B>(8)</I> process for each subdirectory in <I>dir</I>, up to a limit of -1000 subdirectories. <B>runsvdir</B> skips subdirectory names starting with dots. -<B><I>runsv</B>(8)</I> must be in <B>runsvdir</B>'s PATH. <P> -At least every five seconds, <B>runsvdir</B> -checks if <I>dir</I> has changed. If it sees a new subdirectory in <I>dir</I>, it starts -a new <B><I>runsv</B>(8)</I> process. If it sees an old sudirectory where a <B><I>runsv</B>(8)</I> process -has exited, it restarts the <B><I>runsv</B>(8)</I> process. If <B>runsvdir</B> sees a subdirectory -being removed that was previously there, it sends the corresponding <B><I>runsv</B>(8)</I> +<h2><a name='sect0' href='#toc0'>Name</a></h2> +runsvdir - starts and monitors a collection of <i>runsv(8)</i> processes +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>runsvdir</b> +<i>dir</i> [ <i>log</i> ] +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<i>dir</i> must be a directory. <i>log</i> is a space holder for +a readproctitle log and must be at least seven characters long. <p> +<b>runsvdir</b> +starts a <i><b>runsv</b>(8)</i> process for each subdirectory in <i>dir</i>, up to a limit of +1000 subdirectories. <b>runsvdir</b> skips subdirectory names starting with dots. +<i><b>runsv</b>(8)</i> must be in <b>runsvdir</b>&rsquo;s PATH. <p> +At least every five seconds, <b>runsvdir</b> +checks if <i>dir</i> has changed. If it sees a new subdirectory in <i>dir</i>, it starts +a new <i><b>runsv</b>(8)</i> process. If it sees an old sudirectory where a <i><b>runsv</b>(8)</i> process +has exited, it restarts the <i><b>runsv</b>(8)</i> process. If <b>runsvdir</b> sees a subdirectory +being removed that was previously there, it sends the corresponding <i><b>runsv</b>(8)</i> process a TERM signal, stops monitoring this process, and so does not restart -the <B><I>runsv</B>(8)</I> process if it exits. <P> -If the <I>log</I> argument is given to <B>runsvdir</B>, -all output to standard error is redirected to this <I>log</I>, which is similar -to the <B><I>readproctitle</B>(8)</I> log. To see the most recent error messages, use -a process-listing tool such as <B><I>ps</B>(1)</I>. <B>runsvdir</B> writes a dot to the readproctitle -log every 15 minutes so that old error messages expire. <P> -Normally <B>runsvdir</B> -is started by <B><I>runit</B>(8)</I> in stage 2. -<H2><A NAME="sect3">Signals</A></H2> -If <B>runsvdir</B> receives a TERM signal, -it exits with 0 immediately. <P> -If <B>runsvdir</B> receives a HUP signal, it sends -a TERM signal to each <B><I>runsv</B>(8)</I> process it is monitoring and then exits +the <i><b>runsv</b>(8)</i> process if it exits. <p> +If the <i>log</i> argument is given to <b>runsvdir</b>, +all output to standard error is redirected to this <i>log</i>, which is similar +to the <i><b>readproctitle</b>(8)</i> log. To see the most recent error messages, use +a process-listing tool such as <i><b>ps</b>(1)</i>. <b>runsvdir</b> writes a dot to the readproctitle +log every 15 minutes so that old error messages expire. <p> +Normally <b>runsvdir</b> +is started by <i><b>runit</b>(8)</i> in stage 2. +<h2><a name='sect3' href='#toc3'>Signals</a></h2> +If <b>runsvdir</b> receives a TERM signal, +it exits with 0 immediately. <p> +If <b>runsvdir</b> receives a HUP signal, it sends +a TERM signal to each <i><b>runsv</b>(8)</i> process it is monitoring and then exits with 111. -<H2><A NAME="sect4">See Also</A></H2> -<I>runsvchdir(8)</I>, <I>runsv(8)</I>, <I>runsvctrl(8)</I>, <I>runsvstat(8)</I>, <I>runit(8)</I>, -<I>runit-init(8)</I>, <I>svlogd(8)</I>, <I>svwaitdown(8)</I>, <I>svwaitup(8)</I>, <I>readproctitle(8)</I>, -<I>svscan(8)</I> <P> - <I>http://smarden.org/runit/</I><BR> - <I>http://cr.yp.to/daemontools.html</I><BR> +<h2><a name='sect4' href='#toc4'>See Also</a></h2> +<i>runsvchdir(8)</i>, <i>runsv(8)</i>, <i>runsvctrl(8)</i>, <i>runsvstat(8)</i>, <i>runit(8)</i>, +<i>runit-init(8)</i>, <i>svlogd(8)</i>, <i>svwaitdown(8)</i>, <i>svwaitup(8)</i>, <i>readproctitle(8)</i>, +<i>svscan(8)</i> <p> + <i>http://smarden.org/runit/</i><br> + <i>http://cr.yp.to/daemontools.html</i><br> -<H2><A NAME="sect5">Author</A></H2> -Gerrit Pape &lt;pape@smarden.org&gt; <P> +<h2><a name='sect5' href='#toc5'>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">Signals</A></LI> -<LI><A NAME="toc4" HREF="#sect4">See Also</A></LI> -<LI><A NAME="toc5" HREF="#sect5">Author</A></LI> -</UL> -</BODY></HTML> +<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'>Signals</a></li> +<li><a name='toc4' href='#sect4'>See Also</a></li> +<li><a name='toc5' href='#sect5'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/runsvstat.8.html b/doc/runsvstat.8.html @@ -1,62 +1,63 @@ -<HTML> -<HEAD> -<TITLE>runsvstat(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> -runsvstat - prints the status of services monitored by <B><I>runsv</B>(8)</I>. -<H2><A NAME="sect1">Synopsis</A></H2> -<B>runsvstat</B> -[ <B>-l</B> ] <I>services</I> -<H2><A NAME="sect2">Description</A></H2> -<I>services</I> consists of one or more arguments, each -argument naming a directory. <P> -<B>runsvstat</B> checks for each directory if <B><I>runsv</B>(8)</I> -is successfully running this <I>service</I>, and if so, prints one human-readable -line reporting the status of this <I>service</I>. Optionally <B><I>runsvstat</B>(8)</I> prints +<html> +<head> +<title>runsvstat(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> + +<h2><a name='sect0' href='#toc0'>Name</a></h2> +runsvstat - prints the status of services monitored by <i><b>runsv</b>(8)</i>. +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>runsvstat</b> +[ <b>-l</b> ] <i>services</i> +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<i>services</i> consists of one or more arguments, each +argument naming a directory. <p> +<b>runsvstat</b> checks for each directory if <i><b>runsv</b>(8)</i> +is successfully running this <i>service</i>, and if so, prints one human-readable +line reporting the status of this <i>service</i>. Optionally <i><b>runsvstat</b>(8)</i> prints a second line, also in human-readable format, reporting the status of the -corresponding <I>log</I> <I>service</I>. -<H2><A NAME="sect3">Options</A></H2> - -<DL> - -<DT><B>-l</B> </DT> -<DD>log service. Check for each <I>service</I> if -there exists a corresponding <I>log</I> <I>service</I>. If so, print an additional, indented, -line reporting the status of the <I>log</I> <I>service</I>. </DD> -</DL> - -<H2><A NAME="sect4">Exit Codes</A></H2> -<B>runsvstat</B> exits -0, if the states of all <I>services</I> were reported successfully. <P> -For each <I>service</I> -that caused an error (e.g. the directory is not controlled by a <B><I>runsv</B>(8)</I> -process), <B>runsvstat</B> increases the exit code by one and exits non zero. The -maximum is 100. <P> -<B>runsvstat</B> exits 111 on error. -<H2><A NAME="sect5">See Also</A></H2> -<I>runsvctrl(8)</I>, <I>runsv(8)</I>, -<I>runsvdir(8)</I>, <I>runsvchdir(8)</I>, <I>runit(8)</I>, <I>runit-init(8)</I>, <I>svlogd(8)</I>, <I>svwaitdown(8)</I>, -<I>svwaitup(8)</I> <P> - <I>http://smarden.org/runit/</I><BR> +corresponding <i>log</i> <i>service</i>. +<h2><a name='sect3' href='#toc3'>Options</a></h2> + +<dl> + +<dt><b>-l</b> </dt> +<dd>log service. Check for each <i>service</i> if +there exists a corresponding <i>log</i> <i>service</i>. If so, print an additional, indented, +line reporting the status of the <i>log</i> <i>service</i>. </dd> +</dl> + +<h2><a name='sect4' href='#toc4'>Exit Codes</a></h2> +<b>runsvstat</b> exits +0, if the states of all <i>services</i> were reported successfully. <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), <b>runsvstat</b> increases the exit code by one and exits non zero. The +maximum is 100. <p> +<b>runsvstat</b> exits 111 on error. +<h2><a name='sect5' href='#toc5'>See Also</a></h2> +<i>runsvctrl(8)</i>, <i>runsv(8)</i>, +<i>runsvdir(8)</i>, <i>runsvchdir(8)</i>, <i>runit(8)</i>, <i>runit-init(8)</i>, <i>svlogd(8)</i>, <i>svwaitdown(8)</i>, +<i>svwaitup(8)</i> <p> + <i>http://smarden.org/runit/</i><br> -<H2><A NAME="sect6">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">Options</A></LI> -<LI><A NAME="toc4" HREF="#sect4">Exit Codes</A></LI> -<LI><A NAME="toc5" HREF="#sect5">See Also</A></LI> -<LI><A NAME="toc6" HREF="#sect6">Author</A></LI> -</UL> -</BODY></HTML> +<h2><a name='sect6' href='#toc6'>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'>Options</a></li> +<li><a name='toc4' href='#sect4'>Exit Codes</a></li> +<li><a name='toc5' href='#sect5'>See Also</a></li> +<li><a name='toc6' href='#sect6'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/svlogd.8.html b/doc/svlogd.8.html @@ -1,196 +1,197 @@ -<HTML> -<HEAD> -<TITLE>svlogd(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> -svlogd - runit's service logging daemon -<H2><A NAME="sect1">Synopsis</A></H2> -<B>svlogd</B> [-tv] [-r <I>c]</I> [-R -<I>xyz]</I> [-l <I>n]</I> [-b <I>n]</I> <I>logs</I> -<H2><A NAME="sect2">Description</A></H2> -<I>logs</I> consists of one or more arguments, -each specifying a directory. <P> -<B>svlogd</B> continuously reads log data from its +<html> +<head> +<title>svlogd(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> + +<h2><a name='sect0' href='#toc0'>Name</a></h2> +svlogd - runit&rsquo;s service logging daemon +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>svlogd</b> [-tv] [-r <i>c]</i> [-R +<i>xyz]</i> [-l <i>n]</i> [-b <i>n]</i> <i>logs</i> +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<i>logs</i> consists of one or more arguments, +each specifying a directory. <p> +<b>svlogd</b> continuously reads log data from its standard input, optionally filters log messages, and writes the data to -one or more automatically rotated <I>logs</I>. <P> +one or more automatically rotated <i>logs</i>. <p> Recent log files can automatically be processed by an arbitrary processor program when they are rotated, and -<B>svlogd</B> can be told to alert selected log messages to standard error. <P> -<B>svlogd</B> +<b>svlogd</b> can be told to alert selected log messages to standard error. <p> +<b>svlogd</b> runs until it sees end-of-file on standard input or is sent a TERM signal, see below. -<H3><A NAME="sect3">Log Directory</A></H3> -A log directory <I>log</I> contains some number of old -log files, and the current log file <I>current</I>. Old log files have a file name -starting with <I>@</I> followed by a precise timestamp (see <B><I>tai64n</B>(8)</I>), indicating -when <I>current</I> was rotated and renamed to this file. <P> +<h3><a name='sect3' href='#toc3'>Log Directory</a></h3> +A log directory <i>log</i> contains some number of old +log files, and the current log file <i>current</i>. Old log files have a file name +starting with <i>@</i> followed by a precise timestamp (see <i><b>tai64n</b>(8)</i>), indicating +when <i>current</i> was rotated and renamed to this file. <p> A log directory additionally -contains the lock file <I>lock</I>, maybe <I>state</I> and <I>newstate</I>, and optionally the -file <I>config</I>. <B>svlogd</B> creates necessary files if they don't exist. <P> -If <B>svlogd</B> +contains the lock file <i>lock</i>, maybe <i>state</i> and <i>newstate</i>, and optionally the +file <i>config</i>. <b>svlogd</b> creates necessary files if they don&rsquo;t exist. <p> +If <b>svlogd</b> has trouble opening a log directory, it prints a warning, and ignores this -log directory. If <B>svlogd</B> is unable to open all log directories given at +log directory. If <b>svlogd</b> is unable to open all log directories given at the command line, it exits with an error. This can happen on start-up or after receiving a HUP signal. -<H3><A NAME="sect4">Log File Rotation</A></H3> -<B>svlogd</B> appends selected log -messages to the <I>current</I> log file. If <I>current</I> has <I>size</I> bytes or more size -(or there is a new-line within the last <I>len</I> of <I>size</I> bytes) <I>current</I> is rotated: -<P> -<B>svlogd</B> closes <I>current</I>, changes permission of <I>current</I> to 0755, renames <I>current</I> -to @<I>timestamp.s,</I> and starts with a new empty <I>current</I>. If <B>svlogd</B> sees <I>num</I> -or more old log files in <I>dir</I>, it removes the oldest. -<H3><A NAME="sect5">Processor</A></H3> -If <B>svlogd</B> -is told to process recent log files, it saves <I>current</I> to @<I>timestamp.u,</I> feeds -@<I>timestamp.u</I> through ``sh -c "<I>processor</I>"'' and writes the output to @<I>timestamp.t.</I> -If the <I>processor</I> finishes successfully, @<I>timestamp.u</I> is deleted and @<I>timestamp.t</I> -is renamed to @<I>timestamp.s,</I> otherwise @<I>timestamp.t</I> is deleted and the <I>processor</I> -is started again. <B>svlogd</B> also saves any output that the <I>processor</I> writes +<h3><a name='sect4' href='#toc4'>Log File Rotation</a></h3> +<b>svlogd</b> appends selected log +messages to the <i>current</i> log file. If <i>current</i> has <i>size</i> bytes or more size +(or there is a new-line within the last <i>len</i> of <i>size</i> bytes) <i>current</i> is rotated: +<p> +<b>svlogd</b> closes <i>current</i>, changes permission of <i>current</i> to 0755, renames <i>current</i> +to @<i>timestamp.s,</i> and starts with a new empty <i>current</i>. If <b>svlogd</b> sees <i>num</i> +or more old log files in <i>dir</i>, it removes the oldest. +<h3><a name='sect5' href='#toc5'>Processor</a></h3> +If <b>svlogd</b> +is told to process recent log files, it saves <i>current</i> to @<i>timestamp.u,</i> feeds +@<i>timestamp.u</i> through &lsquo;&lsquo;sh -c "<i>processor</i>"&rsquo;&rsquo; and writes the output to @<i>timestamp.t.</i> +If the <i>processor</i> finishes successfully, @<i>timestamp.u</i> is deleted and @<i>timestamp.t</i> +is renamed to @<i>timestamp.s,</i> otherwise @<i>timestamp.t</i> is deleted and the <i>processor</i> +is started again. <b>svlogd</b> also saves any output that the <i>processor</i> writes to file descriptor 5, and make that output available on file descriptor -4 when it runs <I>processor</I> on the next log file rotation. <P> -A <I>processor</I> is run -in the background. If <B>svlogd</B> sees a previously started <I>processor</I> still running -when trying to start a new one for the same <I>log</I>, it blocks until the currently -running <I>processor</I> has finished successfully. Only the HUP signal works in +4 when it runs <i>processor</i> on the next log file rotation. <p> +A <i>processor</i> is run +in the background. If <b>svlogd</b> sees a previously started <i>processor</i> still running +when trying to start a new one for the same <i>log</i>, it blocks until the currently +running <i>processor</i> has finished successfully. Only the HUP signal works in that situation. Note that this may block any program feeding its log data -to <B>svlogd.</B> <P> - -<H3><A NAME="sect6">Config</A></H3> -On startup, and after receiving a HUP signal, <B>svlogd</B> checks -for each <I>log</I> if the configuration file <I>log/config</I> exists, and if so, reads -the file line by line and adjusts configuration for <I>log</I> as follows: <P> +to <b>svlogd.</b> +<p> +<h3><a name='sect6' href='#toc6'>Config</a></h3> +On startup, and after receiving a HUP signal, <b>svlogd</b> checks +for each <i>log</i> if the configuration file <i>log/config</i> exists, and if so, reads +the file line by line and adjusts configuration for <i>log</i> as follows: <p> If -the line is empty, less than two characters long, or starts with a ``#'', it +the line is empty, less than two characters long, or starts with a &lsquo;&lsquo;#&rsquo;&rsquo;, it is ignored. A line of the form -<DL> - -<DT>s<I>size</I> </DT> -<DD>sets the maximum file size of <I>current</I> -when <B>svlogd</B> should rotate the current log file to <I>size</I> bytes. Default is -1000000. If <I>size</I> is zero, <B>svlogd</B> doesn't rotate log files. You should set -<I>size</I> to at least (2 * <I>len</I>). </DD> - -<DT>n<I>num</I> </DT> -<DD>sets the maximum number of old log files -<B>svlogd</B> should maintain to <I>num</I>. If <B>svlogd</B> sees more that <I>num</I> old log files -in <I>log</I> after log file rotation, it deletes the oldest one. Default is 10. -</DD> - -<DT>!<I>processor</I> </DT> -<DD>tells <B>svlogd</B> to feed each recent log file through <I>processor</I> +<dl> + +<dt>s<i>size</i> </dt> +<dd>sets the maximum file size of <i>current</i> +when <b>svlogd</b> should rotate the current log file to <i>size</i> bytes. Default is +1000000. If <i>size</i> is zero, <b>svlogd</b> doesn&rsquo;t rotate log files. You should set +<i>size</i> to at least (2 * <i>len</i>). </dd> + +<dt>n<i>num</i> </dt> +<dd>sets the maximum number of old log files +<b>svlogd</b> should maintain to <i>num</i>. If <b>svlogd</b> sees more that <i>num</i> old log files +in <i>log</i> after log file rotation, it deletes the oldest one. Default is 10. +</dd> + +<dt>!<i>processor</i> </dt> +<dd>tells <b>svlogd</b> to feed each recent log file through <i>processor</i> (see above) on log file rotation. By default log files are not processed. -</DD> -</DL> -<P> -If a line starts with a <I>-</I>, <I>+</I>, <I>e</I>, or <I>E</I>, <B>svlogd</B> matches the first <I>len</I> characters -of each log message against <I>pattern</I> and acts accordingly: -<DL> - -<DT>-<I>pattern</I> </DT> -<DD>the log -message is deselected. </DD> - -<DT>+<I>pattern</I> </DT> -<DD>the log message is selected </DD> - -<DT>e<I>pattern</I> </DT> -<DD>log -messages matching <I>pattern</I> are printed to standard error. </DD> - -<DT>E<I>pattern</I> </DT> -<DD>log messages -not matching <I>pattern</I> are printed to standard error. </DD> -</DL> -<P> +</dd> +</dl> +<p> +If a line starts with a <i>-</i>, <i>+</i>, <i>e</i>, or <i>E</i>, <b>svlogd</b> matches the first <i>len</i> characters +of each log message against <i>pattern</i> and acts accordingly: +<dl> + +<dt>-<i>pattern</i> </dt> +<dd>the log +message is deselected. </dd> + +<dt>+<i>pattern</i> </dt> +<dd>the log message is selected </dd> + +<dt>e<i>pattern</i> </dt> +<dd>log +messages matching <i>pattern</i> are printed to standard error. </dd> + +<dt>E<i>pattern</i> </dt> +<dd>log messages +not matching <i>pattern</i> are printed to standard error. </dd> +</dl> +<p> Initially each line -is selected. Deselected log messages are discarded from <I>log</I>. -<H2><A NAME="sect7">Pattern Matching</A></H2> -<B>svlogd</B> -matches a log message against the string <I>pattern</I> as follows: <P> -<I>pattern</I> is +is selected. Deselected log messages are discarded from <i>log</i>. +<h2><a name='sect7' href='#toc7'>Pattern Matching</a></h2> +<b>svlogd</b> +matches a log message against the string <i>pattern</i> as follows: <p> +<i>pattern</i> is applied to the log message one character by one, starting with the first. -A character not a star (``*'') and not a plus (``+'') matches itself. A plus matches -the next character in <I>pattern</I> in the log message one or more times. A star -before the end of <I>pattern</I> matches any string in the log message that does -not include the next character in <I>pattern</I>. A star at the end of <I>pattern</I> +A character not a star (&lsquo;&lsquo;*&rsquo;&rsquo;) and not a plus (&lsquo;&lsquo;+&rsquo;&rsquo;) matches itself. A plus matches +the next character in <i>pattern</i> in the log message one or more times. A star +before the end of <i>pattern</i> matches any string in the log message that does +not include the next character in <i>pattern</i>. A star at the end of <i>pattern</i> matches any string. -<H2><A NAME="sect8">Options</A></H2> - -<DL> - -<DT><B>-t</B> </DT> -<DD>timestamp. Prefix each selected line with a -precise timestamp (see <B><I>tai64n</B>(8)</I>) when writing to <I>log</I> or to standard error. -</DD> - -<DT><B>-r <I>c</B> </I></DT> -<DD>replace. <I>c</I> must be a single character. Replace non-printable characters -in log messages with <I>c</I>. Characters are replaced before pattern matching -is applied. </DD> - -<DT><B>-R <I>xyz</B> </I></DT> -<DD>replace charset. Additionally to non-printable characters, -replace all characters found in <I>xyz</I> with <I>c</I> (default ``_''). </DD> - -<DT><B>-l <I>len</B> </I></DT> -<DD>line length. -Pattern matching applies to the first <I>len</I> characters of a log message only. -Default is 1000. </DD> - -<DT><B>-b <I>buflen</B> </I></DT> -<DD>buffer size. Set the size of the buffer <B>svlogd</B> -uses when reading from standard input and writing to <I>logs</I> to <I>buflen</I>. Default -is 1024. <I>buflen</I> must be greater than <I>len</I>. </DD> - -<DT><B>-v</B> </DT> -<DD>verbose. Print verbose messages -to standard error. </DD> -</DL> - -<H2><A NAME="sect9">Signals</A></H2> -If <B>svlogd</B> is sent a HUP signal, it closes and -reopens all <I>logs</I>, and updates their configuration according to <I>log/config</I>. -If <B>svlogd</B> has trouble opening a log directory, it prints a warning, and -discards this log directory. If <B>svlogd</B> is unable to open all log directories -given at the command line, it exits with an error. <P> -If <B>svlogd</B> is sent a TERM +<h2><a name='sect8' href='#toc8'>Options</a></h2> + +<dl> + +<dt><b>-t</b> </dt> +<dd>timestamp. Prefix each selected line with a +precise timestamp (see <i><b>tai64n</b>(8)</i>) when writing to <i>log</i> or to standard error. +</dd> + +<dt><b>-r <i>c</b> </i></dt> +<dd>replace. <i>c</i> must be a single character. Replace non-printable characters +in log messages with <i>c</i>. Characters are replaced before pattern matching +is applied. </dd> + +<dt><b>-R <i>xyz</b> </i></dt> +<dd>replace charset. Additionally to non-printable characters, +replace all characters found in <i>xyz</i> with <i>c</i> (default &lsquo;&lsquo;_&rsquo;&rsquo;). </dd> + +<dt><b>-l <i>len</b> </i></dt> +<dd>line length. +Pattern matching applies to the first <i>len</i> characters of a log message only. +Default is 1000. </dd> + +<dt><b>-b <i>buflen</b> </i></dt> +<dd>buffer size. Set the size of the buffer <b>svlogd</b> +uses when reading from standard input and writing to <i>logs</i> to <i>buflen</i>. Default +is 1024. <i>buflen</i> must be greater than <i>len</i>. </dd> + +<dt><b>-v</b> </dt> +<dd>verbose. Print verbose messages +to standard error. </dd> +</dl> + +<h2><a name='sect9' href='#toc9'>Signals</a></h2> +If <b>svlogd</b> is sent a HUP signal, it closes and +reopens all <i>logs</i>, and updates their configuration according to <i>log/config</i>. +If <b>svlogd</b> has trouble opening a log directory, it prints a warning, and +discards this log directory. If <b>svlogd</b> is unable to open all log directories +given at the command line, it exits with an error. <p> +If <b>svlogd</b> is sent a TERM signal, or if it sees end-of-file on standard input, it stops reading standard -input, processes the data in the buffer, waits for all <I>processor</I> subprocesses -to finish if any, and exits 0 as soon as possible. <P> -If <B>svlogd</B> is sent an -ALRM signal, it forces log file rotation for all <I>logs</I> with a non empty -<I>current</I> log file. -<H2><A NAME="sect10">See Also</A></H2> -<I>runsv(8)</I>, <I>runsvstat(8)</I>, <I>runsvctrl(8)</I>, <I>runsvdir(8)</I>, -<I>runsvchdir(8)</I>, <I>runit(8)</I>, <I>runit-init(8)</I>, <I>multilog(8)</I> <P> -<I>http://smarden.org/runit/</I> - -<H2><A NAME="sect11">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> -<UL> -<LI><A NAME="toc3" HREF="#sect3">Log Directory</A></LI> -<LI><A NAME="toc4" HREF="#sect4">Log File Rotation</A></LI> -<LI><A NAME="toc5" HREF="#sect5">Processor</A></LI> -<LI><A NAME="toc6" HREF="#sect6">Config</A></LI> -</UL> -<LI><A NAME="toc7" HREF="#sect7">Pattern Matching</A></LI> -<LI><A NAME="toc8" HREF="#sect8">Options</A></LI> -<LI><A NAME="toc9" HREF="#sect9">Signals</A></LI> -<LI><A NAME="toc10" HREF="#sect10">See Also</A></LI> -<LI><A NAME="toc11" HREF="#sect11">Author</A></LI> -</UL> -</BODY></HTML> +input, processes the data in the buffer, waits for all <i>processor</i> subprocesses +to finish if any, and exits 0 as soon as possible. <p> +If <b>svlogd</b> is sent an +ALRM signal, it forces log file rotation for all <i>logs</i> with a non empty +<i>current</i> log file. +<h2><a name='sect10' href='#toc10'>See Also</a></h2> +<i>runsv(8)</i>, <i>runsvstat(8)</i>, <i>runsvctrl(8)</i>, <i>runsvdir(8)</i>, +<i>runsvchdir(8)</i>, <i>runit(8)</i>, <i>runit-init(8)</i>, <i>multilog(8)</i> <p> +<i>http://smarden.org/runit/</i> + +<h2><a name='sect11' href='#toc11'>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> +<ul> +<li><a name='toc3' href='#sect3'>Log Directory</a></li> +<li><a name='toc4' href='#sect4'>Log File Rotation</a></li> +<li><a name='toc5' href='#sect5'>Processor</a></li> +<li><a name='toc6' href='#sect6'>Config</a></li> +</ul> +<li><a name='toc7' href='#sect7'>Pattern Matching</a></li> +<li><a name='toc8' href='#sect8'>Options</a></li> +<li><a name='toc9' href='#sect9'>Signals</a></li> +<li><a name='toc10' href='#sect10'>See Also</a></li> +<li><a name='toc11' href='#sect11'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/svwaitdown.8.html b/doc/svwaitdown.8.html @@ -1,82 +1,83 @@ -<HTML> -<HEAD> -<TITLE>svwaitdown(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> +<html> +<head> +<title>svwaitdown(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> -<H2><A NAME="sect0">Name</A></H2> -svwaitdown - waits for services controlled by <I>runsv(8)</I> or <I>supervise(8)</I> +<h2><a name='sect0' href='#toc0'>Name</a></h2> +svwaitdown - waits for services controlled by <i>runsv(8)</i> or <i>supervise(8)</i> to be down -<H2><A NAME="sect1">Synopsis</A></H2> -<B>svwaitdown</B> [ <B>-v</B> ] [ <B>-k</B> ] [ <B>-t</B> <I>sec</I> ] <I>services</I> -<H2><A NAME="sect2">Description</A></H2> -<I>services</I> -consists of one or more arguments. Each <I>service</I> directory must start with -a slash. <P> -<B>svwaitdown</B> sends each <I>service</I> given at the command line the ``down'' -command, and waits for it to become down. The <I>services</I> given at the command -line must be controlled by <B><I>runsv</B>(8)</I>, or <B><I>supervise</B>(8)</I>. <P> -<B>svwaitdown</B> blocks, -limited by a <I>timeout</I>, until all <I>services</I> are down or reports errors. -<H2><A NAME="sect3">Options</A></H2> +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>svwaitdown</b> [ <b>-v</b> ] [ <b>-k</b> ] [ <b>-t</b> <i>sec</i> ] <i>services</i> +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<i>services</i> +consists of one or more arguments. Each <i>service</i> directory must start with +a slash. <p> +<b>svwaitdown</b> sends each <i>service</i> given at the command line the &lsquo;&lsquo;down&rsquo;&rsquo; +command, and waits for it to become down. The <i>services</i> given at the command +line must be controlled by <i><b>runsv</b>(8)</i>, or <i><b>supervise</b>(8)</i>. <p> +<b>svwaitdown</b> blocks, +limited by a <i>timeout</i>, until all <i>services</i> are down or reports errors. +<h2><a name='sect3' href='#toc3'>Options</a></h2> -<DL> +<dl> -<DT><B>-v</B> -</DT> -<DD>verbose. Print verbose messages to stderr. </DD> +<dt><b>-v</b> +</dt> +<dd>verbose. Print verbose messages to stderr. </dd> -<DT><B>-t <I>sec</B> </I></DT> -<DD>Set the timeout for waiting -for <I>services</I> to become down to <I>sec</I> seconds. <I>sec</I> must be between 2 and 6000. -Default is 600 (10 minutes). </DD> +<dt><b>-t <i>sec</b> </i></dt> +<dd>Set the timeout for waiting +for <i>services</i> to become down to <i>sec</i> seconds. <i>sec</i> must be between 2 and 6000. +Default is 600 (10 minutes). </dd> -<DT><B>-k</B> </DT> -<DD>Kill. If the timeout is reached before all -<I>services</I> are down, tell the <B><I>runsv</B>(8)</I> processes to send the <I>services</I> a KILL -signal. </DD> +<dt><b>-k</b> </dt> +<dd>Kill. If the timeout is reached before all +<i>services</i> are down, tell the <i><b>runsv</b>(8)</i> processes to send the <i>services</i> a KILL +signal. </dd> -<DT><B>-x</B> </DT> -<DD>Exit. Send each <I>service</I> the ``exit'' command additionally to the ``down'' -command, and wait for the corresponding <B><I>runsv</B>(8)</I> processes to exit instead -for the <I>services</I> to be down. This option should only be used by <B><I>runit</B>(8)</I> -in stage 3 when <B><I>runsvdir</B>(8)</I> is already stopped. </DD> -</DL> +<dt><b>-x</b> </dt> +<dd>Exit. Send each <i>service</i> the &lsquo;&lsquo;exit&rsquo;&rsquo; command additionally to the &lsquo;&lsquo;down&rsquo;&rsquo; +command, and wait for the corresponding <i><b>runsv</b>(8)</i> processes to exit instead +for the <i>services</i> to be down. This option should only be used by <i><b>runit</b>(8)</i> +in stage 3 when <i><b>runsvdir</b>(8)</i> is already stopped. </dd> +</dl> -<H2><A NAME="sect4">Exit Codes</A></H2> -<B>svwaitdown</B> returns -0 as soon as all <I>services</I> are down. <P> -If a <I>service</I> is usually controlled by -<B><I>runsv (8)</B></I> or <B><I>supervise</B>(8)</I>, but no supervisor process is currently running, -<B>svwaitdown</B> treats this <I>service</I> as if it would be down. <P> -For each <I>service</I> -that causes an error while checking, <B>svwaitdown</B> increases the exit code -by one and exits non zero. The maximum is 100. <P> -<B>svwaitdown</B> returns 111 if -the timeout <I>sec</I> was reached. -<H2><A NAME="sect5">See Also</A></H2> -<I>svwaitdown(8)</I>, <I>runsv(8)</I>, <I>runsvctrl(8)</I>, -<I>runsvstat(8)</I>, <I>runsvdir(8)</I>, <I>runsvchdir(8)</I>, <I>runit(8)</I>, <I>runit-init(8)</I>, <I>supervise(8)</I>, -<I>svscan(8)</I> <P> - <I>http://smarden.org/runit/</I><BR> - <I>http://cr.yp.to/daemontools.html</I><BR> +<h2><a name='sect4' href='#toc4'>Exit Codes</a></h2> +<b>svwaitdown</b> returns +0 as soon as all <i>services</i> are down. <p> +If a <i>service</i> is usually controlled by +<i><b>runsv (8)</b></i> or <i><b>supervise</b>(8)</i>, but no supervisor process is currently running, +<b>svwaitdown</b> treats this <i>service</i> as if it would be down. <p> +For each <i>service</i> +that causes an error while checking, <b>svwaitdown</b> increases the exit code +by one and exits non zero. The maximum is 100. <p> +<b>svwaitdown</b> returns 111 if +the timeout <i>sec</i> was reached. +<h2><a name='sect5' href='#toc5'>See Also</a></h2> +<i>svwaitdown(8)</i>, <i>runsv(8)</i>, <i>runsvctrl(8)</i>, +<i>runsvstat(8)</i>, <i>runsvdir(8)</i>, <i>runsvchdir(8)</i>, <i>runit(8)</i>, <i>runit-init(8)</i>, <i>supervise(8)</i>, +<i>svscan(8)</i> <p> + <i>http://smarden.org/runit/</i><br> + <i>http://cr.yp.to/daemontools.html</i><br> -<H2><A NAME="sect6">Author</A></H2> -Gerrit Pape &lt;pape@smarden.org&gt; <P> +<h2><a name='sect6' href='#toc6'>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">Options</A></LI> -<LI><A NAME="toc4" HREF="#sect4">Exit Codes</A></LI> -<LI><A NAME="toc5" HREF="#sect5">See Also</A></LI> -<LI><A NAME="toc6" HREF="#sect6">Author</A></LI> -</UL> -</BODY></HTML> +<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'>Options</a></li> +<li><a name='toc4' href='#sect4'>Exit Codes</a></li> +<li><a name='toc5' href='#sect5'>See Also</a></li> +<li><a name='toc6' href='#sect6'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/svwaitup.8.html b/doc/svwaitup.8.html @@ -1,73 +1,74 @@ -<HTML> -<HEAD> -<TITLE>svwaitup(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> +<html> +<head> +<title>svwaitup(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> -<H2><A NAME="sect0">Name</A></H2> -svwaitup - waits for services controlled by <I>runsv(8)</I> or <I>supervise(8)</I> +<h2><a name='sect0' href='#toc0'>Name</a></h2> +svwaitup - waits for services controlled by <i>runsv(8)</i> or <i>supervise(8)</i> to be up -<H2><A NAME="sect1">Synopsis</A></H2> -<B>svwaitup</B> [ <B>-v</B> ] [ <B>-s</B> <I>sec</I> ] <I>services</I> -<H2><A NAME="sect2">Description</A></H2> -<I>services</I> -consist of one or more arguments. Each <I>service</I> directory must start with -a slash. <P> -<B>svwaitup</B> checks each <I>service</I> given at the command line for being -at least the specified number of seconds <I>sec</I> up. The <I>services</I> given at the -command line must be controlled by <B><I>runsv</B>(8)</I>, or <B><I>supervise</B>(8)</I>. <P> -<B>svwaitup</B> blocks -until all <I>services</I> were up and running at least <I>sec</I> seconds when <B>svwaitup</B> +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>svwaitup</b> [ <b>-v</b> ] [ <b>-s</b> <i>sec</i> ] <i>services</i> +<h2><a name='sect2' href='#toc2'>Description</a></h2> +<i>services</i> +consist of one or more arguments. Each <i>service</i> directory must start with +a slash. <p> +<b>svwaitup</b> checks each <i>service</i> given at the command line for being +at least the specified number of seconds <i>sec</i> up. The <i>services</i> given at the +command line must be controlled by <i><b>runsv</b>(8)</i>, or <i><b>supervise</b>(8)</i>. <p> +<b>svwaitup</b> blocks +until all <i>services</i> were up and running at least <i>sec</i> seconds when <b>svwaitup</b> was checking or reports errors. -<H2><A NAME="sect3">Options</A></H2> +<h2><a name='sect3' href='#toc3'>Options</a></h2> -<DL> +<dl> -<DT><B>-v</B> </DT> -<DD>verbose. Print verbose messages -to stderr. </DD> +<dt><b>-v</b> </dt> +<dd>verbose. Print verbose messages +to stderr. </dd> -<DT><B>-s <I>sec</B> </I></DT> -<DD>Set the minimum number of seconds each <I>service</I> has to be -up to <I>sec</I> seconds. <I>sec</I> must be between 2 and 600. Default is 2. </DD> -</DL> +<dt><b>-s <i>sec</b> </i></dt> +<dd>Set the minimum number of seconds each <i>service</i> has to be +up to <i>sec</i> seconds. <i>sec</i> must be between 2 and 600. Default is 2. </dd> +</dl> -<H2><A NAME="sect4">Exit Codes</A></H2> -<B>svwaitup</B> -returns 0 as soon as all <I>services</I> were at least <I>sec</I> seconds up. <P> -<B>Note</B>: If -<B>svwaitup</B> exits 0, it does not guarantee that all <I>services</I> are actually -running. A <I>service</I> could have crashed immediatly after <B>svwaitup</B> was successfully -checking it to be up <I>sec</I> seconds. <I>services</I> should be designed not to rely -on <B>svwaitup</B> to resolve dependencies. <P> -For each <I>service</I> that is down and not -requested to become up, or that causes an error while checking (e.g. <B><I>runsv</B>(8)</I> -is not running), <B>svwaitup</B> increases the exit code by one and exits non -zero. The maximum is 100. <P> -<B>svwaitup</B> returns 111 on error. -<H2><A NAME="sect5">See Also</A></H2> -<I>svwaitdown(8)</I>, -<I>runsv(8)</I>, <I>runsvctrl(8)</I>, <I>runsvstat(8)</I>, <I>runsvdir(8)</I>, <I>runsvchdir(8)</I>, <I>runit(8)</I>, -<I>runit-init(8)</I>, <I>supervise(8)</I>, <I>svscan(8)</I> <P> - <I>http://smarden.org/runit/</I><BR> - <I>http://cr.yp.to/daemontools.html</I><BR> +<h2><a name='sect4' href='#toc4'>Exit Codes</a></h2> +<b>svwaitup</b> +returns 0 as soon as all <i>services</i> were at least <i>sec</i> seconds up. <p> +<b>Note</b>: If +<b>svwaitup</b> exits 0, it does not guarantee that all <i>services</i> are actually +running. A <i>service</i> could have crashed immediatly after <b>svwaitup</b> was successfully +checking it to be up <i>sec</i> seconds. <i>services</i> should be designed not to rely +on <b>svwaitup</b> to resolve dependencies. <p> +For each <i>service</i> that is down and not +requested to become up, or that causes an error while checking (e.g. <i><b>runsv</b>(8)</i> +is not running), <b>svwaitup</b> increases the exit code by one and exits non +zero. The maximum is 100. <p> +<b>svwaitup</b> returns 111 on error. +<h2><a name='sect5' href='#toc5'>See Also</a></h2> +<i>svwaitdown(8)</i>, +<i>runsv(8)</i>, <i>runsvctrl(8)</i>, <i>runsvstat(8)</i>, <i>runsvdir(8)</i>, <i>runsvchdir(8)</i>, <i>runit(8)</i>, +<i>runit-init(8)</i>, <i>supervise(8)</i>, <i>svscan(8)</i> <p> + <i>http://smarden.org/runit/</i><br> + <i>http://cr.yp.to/daemontools.html</i><br> -<H2><A NAME="sect6">Author</A></H2> -Gerrit Pape &lt;pape@smarden.org&gt; <P> +<h2><a name='sect6' href='#toc6'>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">Options</A></LI> -<LI><A NAME="toc4" HREF="#sect4">Exit Codes</A></LI> -<LI><A NAME="toc5" HREF="#sect5">See Also</A></LI> -<LI><A NAME="toc6" HREF="#sect6">Author</A></LI> -</UL> -</BODY></HTML> +<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'>Options</a></li> +<li><a name='toc4' href='#sect4'>Exit Codes</a></li> +<li><a name='toc5' href='#sect5'>See Also</a></li> +<li><a name='toc6' href='#sect6'>Author</a></li> +</ul> +</body> +</html> diff --git a/doc/utmpset.8.html b/doc/utmpset.8.html @@ -1,61 +1,62 @@ -<HTML> -<HEAD> -<TITLE>utmpset(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> +<html> +<head> +<title>utmpset(8) manual page</title> +</head> +<body bgcolor='white'> +<a href='#toc'>Table of Contents</a><p> + +<h2><a name='sect0' href='#toc0'>Name</a></h2> utmpset - logout a line from utmp and wtmp file -<H2><A NAME="sect1">Synopsis</A></H2> -<B>utmpset</B> [ <B>-w</B> -] <I>line</I> -<H2><A NAME="sect2">Description</A></H2> -The <B>utmpset</B> program modifies the user accounting database -<B><I>utmp</B>(5)</I> and optionally <B><I>wtmp</B>(5)</I> to indicate that the user on the terminal -<I>line</I> has logged out. <P> -Ordinary <B><I>init</B>(8)</I> processes handle utmp file records -for local login accounting. The <B><I>runit</B>(8)</I> program doesn't include code to -update the utmp file, the <B><I>getty</B>(8)</I> processes are handled the same as all -other services. <P> -To enable local login accounting, add <B>utmpset</B> to the <B><I>getty</B>(8)</I> -run scripts, e.g.: <P> - #!/bin/sh<BR> - /command/utmpset -w tty5<BR> - exec /sbin/getty 38400 tty5 linux<BR> +<h2><a name='sect1' href='#toc1'>Synopsis</a></h2> +<b>utmpset</b> [ <b>-w</b> +] <i>line</i> +<h2><a name='sect2' href='#toc2'>Description</a></h2> +The <b>utmpset</b> program modifies the user accounting database +<i><b>utmp</b>(5)</i> and optionally <i><b>wtmp</b>(5)</i> to indicate that the user on the terminal +<i>line</i> has logged out. <p> +Ordinary <i><b>init</b>(8)</i> processes handle utmp file records +for local login accounting. The <i><b>runit</b>(8)</i> program doesn&rsquo;t include code to +update the utmp file, the <i><b>getty</b>(8)</i> processes are handled the same as all +other services. <p> +To enable local login accounting, add <b>utmpset</b> to the <i><b>getty</b>(8)</i> +run scripts, e.g.: <p> + #!/bin/sh<br> + /command/utmpset -w tty5<br> + exec /sbin/getty 38400 tty5 linux<br> -<H2><A NAME="sect3">Options</A></H2> +<h2><a name='sect3' href='#toc3'>Options</a></h2> -<DL> +<dl> -<DT><B>-w</B> </DT> -<DD>wtmp. Additionally to the utmp file, write an empty record for -<I>line</I> to the wtmp file. </DD> -</DL> +<dt><b>-w</b> </dt> +<dd>wtmp. Additionally to the utmp file, write an empty record for +<i>line</i> to the wtmp file. </dd> +</dl> -<H2><A NAME="sect4">Exit Codes</A></H2> -<B>utmpset</B> returns 111 on error, 1 on wrong +<h2><a name='sect4' href='#toc4'>Exit Codes</a></h2> +<b>utmpset</b> returns 111 on error, 1 on wrong usage, 0 in all other cases. -<H2><A NAME="sect5">See Also</A></H2> -<I>runsv(8)</I>, <I>runsvctrl(8)</I>, <I>runsvstat(8)</I>, -<I>runsvdir(8)</I>, <I>runsvchdir(8)</I>, <I>runit(8)</I>, <I>runit-init(8)</I>, <I>getty(8)</I> <P> -<I>http://smarden.org/runit/</I> - -<H2><A NAME="sect6">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">Options</A></LI> -<LI><A NAME="toc4" HREF="#sect4">Exit Codes</A></LI> -<LI><A NAME="toc5" HREF="#sect5">See Also</A></LI> -<LI><A NAME="toc6" HREF="#sect6">Author</A></LI> -</UL> -</BODY></HTML> +<h2><a name='sect5' href='#toc5'>See Also</a></h2> +<i>runsv(8)</i>, <i>runsvctrl(8)</i>, <i>runsvstat(8)</i>, +<i>runsvdir(8)</i>, <i>runsvchdir(8)</i>, <i>runit(8)</i>, <i>runit-init(8)</i>, <i>getty(8)</i> <p> +<i>http://smarden.org/runit/</i> + +<h2><a name='sect6' href='#toc6'>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'>Options</a></li> +<li><a name='toc4' href='#sect4'>Exit Codes</a></li> +<li><a name='toc5' href='#sect5'>See Also</a></li> +<li><a name='toc6' href='#sect6'>Author</a></li> +</ul> +</body> +</html>