systemctlは、有効になっているが無効になっているすべてのサービスを開始します。

systemctlは、有効になっているが無効になっているすべてのサービスを開始します。

コード型構成ツールを開発しており、そのためのシステムプロバイダを作成したいと思います。

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-reloadsystemd設定を再読み込みするように指示します。

気づくできるようにするサービスとは、サービスが異なるユニットの依存関係から開始されることを意味します。デフォルトのターゲットがマルチユーザーであると仮定すると、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

関連情報