runsvdir(8) System Manager's Manual runsvdir(8)

# [NAME](#NAME)

runsvdir - starts and monitors a collection of [runsv(8)](/man/os/runit/runsv.8) processes

# [SYNOPSIS](#SYNOPSIS)

**runsvdir** \[-P] *dir* \[ *log* ]

# [DESCRIPTION](#DESCRIPTION)

*dir* must be a directory. *log* is a space holder for a readproctitle log, and must be at least seven characters long or absent.

**runsvdir** starts a [**runsv**(8)](/man/os/runit/runsv.8) process for each subdirectory, or symlink to a directory, in the services directory *dir*, up to a limit of 1000 subdirectories, and restarts a [**runsv**(8)](/man/os/runit/runsv.8) process if it terminates. **runsvdir** skips subdirectory names starting with dots. [**runsv**(8)](/man/os/runit/runsv.8) must be in **runsvdir**'s PATH.

At least every five seconds **runsvdir** checks whether the time of last modification, the inode, or the device, of the services directory *dir* has changed. If so, it re-scans the service directory, and if it sees a new subdirectory, or new symlink to a directory, in *dir*, it starts a new [**runsv**(8)](/man/os/runit/runsv.8) process; if **runsvdir** sees a subdirectory being removed that was previously there, it sends the corresponding [**runsv**(8)](/man/os/runit/runsv.8) process a TERM signal, stops monitoring this process, and so does not restart the [**runsv**(8)](/man/os/runit/runsv.8) process if it exits.

If the *log* argument is given to **runsvdir**, all output to standard error is redirected to this *log*, which is similar to the daemontools' **readproctitle** log. To see the most recent error messages, use a process-listing tool such as [**ps**(1)](/man/os/runit/ps.1). **runsvdir** writes a dot to the readproctitle log every 15 minutes so that old error messages expire.

# [OPTIONS](#OPTIONS)

[**-P**](#P)

use [**setsid**(2)](/man/os/runit/setsid.2) to run each [**runsv**(8)](/man/os/runit/runsv.8) process in a new session and separate process group.

# [SIGNALS](#SIGNALS)

If **runsvdir** receives a TERM signal, it exits with 0 immediately.

If **runsvdir** receives a HUP signal, it sends a TERM signal to each [**runsv**(8)](/man/os/runit/runsv.8) process it is monitoring and then exits with 111.

# [SEE ALSO](#SEE_ALSO)

[sv(8)](/man/os/runit/sv.8), [runsv(8)](/man/os/runit/runsv.8), [runsvchdir(8)](/man/os/runit/runsvchdir.8), [runit(8)](/man/os/runit/runit.8), [runit-init(8)](/man/os/runit/runit-init.8), [chpst(8)](/man/os/runit/chpst.8), [svlogd(8)](/man/os/runit/svlogd.8), [utmpset(8)](/man/os/runit/utmpset.8), [setsid(2)](/man/os/runit/setsid.2)

https://smarden.org/runit/

# [AUTHOR](#AUTHOR)

Gerrit Pape &lt;pape@smarden.org&gt;

---

Document: runsvdir(8) from runit 2.3.1-r4 (Chainguard OS)
Source: https://github.com/g-pape/runit
