コード型構成ツールを開発しており、そのためのシステムプロバイダを作成したいと思います。
NetworkManager.service
ここで、ユーザーが設定で有効または無効にしたい項目を説明しているとしますcups.service
。
systemctl enable NetworkManager.service
とを使用してそれぞれのユニットファイルをリンク解除できますが、今すぐsystemctl disable cups.service
停止する必要があるサービスを停止して開始する必要があるサービスを開始する必要があります。
私は私のためにこれを行うためのコマンドがあればと思います。 「実行中ですが停止する必要があるすべてを停止し、停止しているが実行する必要があるすべてを開始します。」systemctl daemon-reload
残念ながら、これは私が望むものではありません。
そのような機能が組み込まれていますか?systemctl
それとも、各サービスを個別に運営する必要がありますか?
ポリスチレンこれは実際に別の質問でなければなりません。しかし、私のユーザーは、PID 1がシステム化されていないchrooted / containerized環境で私のプログラムを実行するいくつかのユースケースがあると思います。デバイスジョブを呼び出そうとすると、systemctl
ステータス1で終了し、メッセージが表示されますSystem has not been booted with systemd as init system (PID 1). Can't operate.
。この状況を事前に確認する方法はありますか?それとも、エラーをキャッチすることが私ができる最善ですか?
答え1
元の質問に答えるには:
daemon-reload
systemd
設定を再読み込みするように指示します。
気づくできるようにするサービスとは、サービスが異なるユニットの依存関係から開始されることを意味します。デフォルトのターゲットがマルチユーザーであると仮定すると、systemctl isolate multi-user.target
すべての従属アクティベーションデバイスを起動する必要があることを理解したら、これを試すことができます。マルチユーザー他のすべてをブロックします。
それでも機能しない場合は、出力を使用する単純なシェルスクリプトを使用しsystemctl list-units -t service
てください。編集:有効/無効は報告されません。代わりにlist-units
使用できます。systemctl status -t service \*
最後に、おそらくこれは本当に欲しいでしょう:
systemctl enable --now SERVICE
systemctl disable --now SERVICE
--now
サービスの有効化/無効化中にサービスを開始/停止します。もちろん、これはsystemctl start SERVICE
個別に行うこともできますsystemctl stop SERVICE
。