| 作者 | Gerrit Pape |
|---|---|
| 初版 | 2004年2月10日 |
| 最新版 |
2.2.0
/ 2024年9月29日 |
| プログラミング 言語 | C、シェル |
| 対応OS | Linux, FreeBSD, OpenBSD, NetBSD, macOS, Solaris |
| 種別 | initデーモン |
| ライセンス | 修正BSDライセンス |
| 公式サイト |
smarden |
runitは、Unix系オペレーティングシステム (OS) のシステム全体におけるプロセスの初期化・管理・完了を行う、initおよびサービス管理スキームである。daemontoolsプロセススーパービジョンツールキットの再実装である。システムサービスのスタートアップを並列化しているので、OSのブート時間を短縮できる。
runitは独立したサービスマネージャとして、他のinitシステムと共に使用されることも多い。それにより、非特権ユーザーが個人的なサービスを統合したり、initシステムは管理しないのに使用中のサービスをルートユーザーが管理したりできる。

runitのコードベースは小さく、モジュール形式でなおかつポータブルであることに重点が置かれている。runitにおけるinitの役割は、1回の初期化・プロセスのスーパービジョン・停止または再起動の3段階に分けられる。1段階目と3段階目は実行されるオペレーティングシステムに適合させねばならないが、2段階目はPOSIX準拠のOS全てに移植できる。これら3つの段階は、それぞれ1・2・3という名前が付いた3つの実行ファイル(通常はシェルスクリプト)で設定できる。
2段階目は通常runsvdirという名前のバイナリを呼び出す。これはグローバルデーモン管理を担当するプロセスである。runsvdirは引数で渡されたフォルダ内にある全てのデーモンそれぞれに対し個別にウォッチドッグを生成すると、生成されたウォッチドッグ各々がデーモン(およびそれに関連付けられたロガーサービス)を起動して、死んだ場合は再起動する。runsvdirはデーモンが追加または削除された場合、そのウォッチドッグをkillしたり新しいウォッチドッグを開始したりする。特有の名前が付いた実行ファイルは、デーモンのライフにおける様々なフェイズ (run, check, finish, ...) を説明するために使用される。その実行ファイルはシグナルを傍受したり特定のスクリプトがあればそれを実行することもでき、デーモン制御インタフェースを公開するために名前付きパイプを作成する。
runitはsysvinitの一時的な代替としても、サービスのスーパーバイザーとしても使われる(後者の場合、inittabファイルで指定されたプロセスを起動するPIDが1である親プロセスのsysvinitと共に使われたり、sysvinit以外の他のinitシステムと共に使われる)。Ruby on Railsを起動できるソフトウェアであるRubyWorksスタックは、そのスイートにrunitを組み入れた。
runitがデフォルトinitシステムであるOSは以下の通り:
runitが「公式に」利用できるinitシステムであるOSは以下の通り: