systemdは再起動後も状態を維持できますか?

systemdは再起動後も状態を維持できますか?

私はsystemdによって制御される何十ものデーモンを持つLinuxサーバーを設定しています。デーモンはターゲットごとにグループ化され、グループごとに起動およびシャットダウンが可能ですが、システム管理者は個々のサービスを手動で制御できます。再起動時に状態(アクティブ化されたサービス)を保存する方法を探しています。アイデアは、サーバーでデバッグ、テスト、開発を行う人が、必要に応じてサーバーを再起動し、再起動前と同じように構成されたシステムを維持できることです。

systemdのsnapshot機能はこれに理想的ですが、私が知っている限り、後で使用するためにディスクにスナップショットを書き込むことはできません。

multi-user.target.wants/私の元の計画は、名前付きサービスへのシンボリックリンクを作成することでしたbootingup.service。システム管理者がアクティブにした各ターゲットは、アクティブにしたばかりのbootingup.service.d/bootingup.confターゲットを開始するように上書きされます。つまり、システムは起動時に最後に開始されたターゲットをアクティブ化しますが、個別にアクティブ化/無効化されたサービスは覚えていません。

再起動後にsystemdにすべてのサービスの状態を記憶させる方法はありますか?

ベストアンサー1

私はこの質問に次のように答えます。

実行中のアイテムをダンプして復元する代わりに、開発者がサービスで、などenabledisable正しく使用するように強制することをお勧めします。afterwantssystemd

今システムから削除したので...


systemctl snapshotあなたが探していることをするのに役立ちます。

実行するとsystemctl snapshot ${SNAPSHOT_NAME} systemdというユニットが作成されます${SNAPSHOT_NAME}.snapshot。このユニットはメモリにのみ存在するようです。ただし、を使用してクエリを続行できますsystemctl

を使用すると、systemctl show ${SNAPSHOT_NAME}.snapshotスナップショットについて収集されたすべての情報が一覧表示されますsystemd。特に、スナップショットの時点でアクティブであったすべてのセルを一覧表示するWants=/セクション(両方とも同じように見えます)があります。After=そのリストを解析してカスタムターゲットに配置するには、を使用できますsystemctl isolate ${CUSTOM_TARGET}

systemctl 分離

コマンドラインで指定されたデバイスとその依存関係を開始し、他のすべてのデバイスを停止します。拡張子なしでユニット名を指定すると、拡張子は「.target」と見なされます。

これは、既存の初期化システムで実行レベルを変更するのと似ています。検疫コマンドは、現在使用中のグラフィック環境または端末を含む可能性のある新しいデバイスでアクティブでないプロセスをただちに停止します。

これはAllowIsolate =が有効になっているデバイスでのみ許可されます。詳細については、systemd.unit(5)を参照してください。

${CUSTOM_TARGET} Wants終了時に更新/部分的にサービスを作成することもできますAfter

おすすめ記事