FreeBSD向けに、新しいシステムマネージャであるrcdが開発されている。

FreeBSDコアチームのメンバーであり、pkgパッケージマネージャの作者でもあるバティスト・ダルーシン氏は、FreeBSD用の新しいシステムマネージャrcdを開発している。rcdシステムマネージャは、/etc/rcの代わりにinitプロセスによって起動され、サービス設定ファイル(/etc/rcd.d/*.ucl)を読み込み、依存関係ツリーを構築し、可能な限りサービスを並列で起動する。その後、サービスを監視し、必要に応じて再起動する。

バックグラウンド プロセスの制御とサービスの操作は、UNIX ソケットに直接コマンドを送信するか、rctl コマンドライン ユーティリティを使用することで実行できます。サービス パラメータを含むユニット ファイルは UCL 形式でフォーマットされ、nginx の形式に似ており、自動処理を簡素化するために JSON から借用した要素で構成ファイルをバインドします。典型的なユニット ファイルのテンプレートを作成し、Lua で組み込みハンドラを記述できます。nginx を起動するためのユニット ファイルの例: name = "nginx"; description = "Nginx HTTP Server"; type = "simple"; command = "/usr/local/sbin/nginx"; command_args = "-g 'daemon off;'"; provides = ["nginx", "http"]; requires = ["NETWORKING", "sshd"]; restart { policy = "always"; max_retries = 10; delay = 2000; backoff = "linear"; } process { user = "www"; group = "www"; cpuset = "0-3"; } rctl { memoryuse = { action = "deny"; amount = "2g"; }; pcpu = { action = "throttle"; amount = "80"; }; }

PIDファイルを使用する代わりに、実行中のプロセスのアクティビティ追跡は、pdfork()システムコールによって返される記述子を使用して行われます。ネットワークソケットにアクセスされたときのみサービスをアクティブ化する機能や、メモリ不足時に重要なサービスが強制終了されないように保護する機能がサポートされています。rcdバックグラウンドプロセスのバージョンは、状態を失うことなく実行時に更新できます。

rctlは、サービスが利用できるリソースを制限するために使用され、サービスは完全な隔離のためにjailed環境で実行できます。UNIX制御ソケットへのアクセスは、個々のサービスごとに設定できます。スリープモードもサポートされています。

システムマネージャは、既存のrc.dサービスシーケンシャル起動システムと完全な下位互換性があり、既存のrc.dスクリプトや設定ファイルを変更することなく使用できます。稼働中のシステムにrcdをインストールするだけで、再起動後も、並列化されたサービス起動による起動時間の短縮を除き、すべてが以前と同様に機能します。この互換性により、システムのrcdへの移行が容易になり、既存のrc.dスクリプトをユニットファイル形式に段階的に変換することが可能になります。

rc.d との互換性を確保するため、特別な「レガシー」ユニットタイプがサポートされています。rcd は /etc/rc.d/ および /usr/local/etc/rc.d/ の内容をスキャンし、スクリプト内の PROVIDE/REQUIRE/BEFORE/KEYWORD ヘッダーを解析し、rc.conf の設定を読み取り、スクリプトの実行状態を判断した後、各スクリプトをレガシー仮想ユニットとして処理します。rcctl コマンドを使用してこのような仮想ユニットを管理する場合、操作はレガシー形式に変換されます。たとえば、「rcctl reload sshd」を実行すると、「/etc/rc.d/sshd reload」が実行されます。

出所: オープンネット.ru

DDoS 保護機能を備えた信頼性の高いサイト用ホスティング、VPS VDS サーバーを購入する 🔥 DDoS攻撃対策付きの信頼性の高いウェブサイトホスティング、VPS/VDSサーバーを購入しましょう | ProHoster