web-dev-qa-db-ja.com

Systemdユニットのアクティブ化と有効化

Systemdユニットの"enable""activate"の違いを誰かが私に明確にできますか?ユニットに[Install]セクションがある場合はenableを呼び出す必要がありますが、それ以外の場合はactivateで十分です。

これは起動プロセスでどのように処理されましたか? Systemdは自動的に正しい決定をしますか?

6
Constantine

サービスをstart(アクティブ化)するには、systemctl start my_service.serviceコマンドを実行します。これにより、現在のセッションですぐにサービスが開始されます。

ブート時にサービスをenableするには、systemctl enable my_service.serviceを実行します。

Enable 1つ以上のユニットまたはユニットインスタンス。これにより、示されたユニットファイルの「[Install]」セクションにエンコードされたシンボリックリンクのセットが作成されます。シンボリックリンクが作成された後、変更が即座に考慮されるようにするために、システムマネージャーの設定が再ロードされます(daemon-reloadと同等の方法で)。

/usr/lib/systemd/system/にはinitスクリプトが含まれています。systemctl enableと入力して起動時にサービスを開始すると、/etc/systemd/system/にリンクされます。

#systemctl enable my_service.service
ln -s '/usr/lib/systemd/system/my_service.service' '/etc/systemd/system/multi-user.target.wants/my_service.service'
5
GAD3R

systemctl enableは、次回の再起動時にサービスを開始するようにシステムを構成します(正しいターゲット状態に関する警告など)。

systemctl startサービスをすぐに開始(アクティブ化)します。

したがって、サービスを今すぐに再起動するたびに開始する場合は、サービスをenableandstartする必要があります。

3
Stephen Harris