「systemctl start」と「systemctl enable」の違いは何ですか?


83

MariaDB-serverをマシンにインストールしました。設定中に、私が従うドキュメントがこれらの手順で提供されるように、常に有効にする必要があるかどうかという問題に遭遇しました。

sudo yum install mariadb mariadb-server 
sudo systemctl start mariadb.service  
sudo systemctl enable mariadb.service

2
またenable サブコマンドstart--nowスイッチを使用することもできます。enable例:systemctl enable sshd --now。サービスdisableへのコマンドにも同じことが当てはまりstopます。

回答:


131

systemctl startそして、systemctl enable異なることを行います。

enable 指定されたユニットを関連する場所にフックして、ブート時、関連するハードウェアがプラグインされたとき、またはユニットファイルで指定された内容に応じて他の状況で自動的に起動するようにします。

start ユニットを今すぐ開始します。

disablestopは、それぞれこれらの反対です。

これは、MariaDBを初めてインストールするときにsystemctl enable mariadb.service、起動時に起動するように実行して有効にすることを意味します。systemctl start mariadb.serviceMariaDBを起動するには、実行するか、単に再起動することもできます。MariaDBを停止するには、実行しますsystemctl stop mariadb.service(次回の起動時または手動で起動したときに再び起動します)。これを無効にして、起動時に起動しないようにするには、を実行しsystemctl disable mariadb.serviceます。

ソース:systemctl manページ


4
++++明確な説明
サンレオ

では、systemctl enableと入力する必要があるのはいつですか?systemdサービスを実行するたびに?
ゴールドネーム

いいえ、自動的に開始させたい場合。自動的に起動しないようにするには、を実行しsystemctl disableます。
vurp0

つまり、サービスはルートとして開始されますか?起動時に別のユーザーとしてサービスを開始するにはどうすればよいですか?
チャミンダバンダラ

18

以下からのmanページsystemctl

enable NAME...
   Enable one or more unit files or unit file instances, as specified
   on the command line. This will create a number of symlinks as
   encoded in the "[Install]" sections of the unit files. After the
   symlinks have been created, the systemd configuration is reloaded
   (in a way that is equivalent to daemon-reload) to ensure the
   changes are taken into account immediately. Note that this does not
   have the effect of also starting any of the units being enabled. If
   this is desired, either --now should be used together with this
   command, or an additional start command must be invoked for the
   unit.
   ...
   Enabling units should not be confused with starting (activating)
   units, as done by the start command. Enabling and starting units is
   orthogonal: units may be enabled without being started and started
   without being enabled. Enabling simply hooks the unit into various
   suggested places (for example, so that the unit is automatically
   started on boot or when a particular kind of hardware is plugged
   in). Starting actually spawns the daemon process (in case of
   service units), or binds the socket (in case of socket units), and
   so on.

基本的に、enableブート時に起動するサービスをマークし、start実際にすぐにサービスを開始します。


いつ有効にする必要がありますか?一度だけ行う必要がありますか?
ゴールドネーム

@Goldname次回の起動時に必要になったときに初めて有効にします。一度だけで十分です
-muru

編集するときはどうでしょうか?再度有効にする必要がありますか?
ゴールドネーム

@Goldnameを再度有効にする必要はありません。
-muru

おかげで、ファイルが別のディレクトリに移動されたり、システムが再起動されたりした場合でも同じことが起こりますか?
ゴールドネーム

4

systemctlバージョン220のとおり、有効無効をサポート--now有効化/無効化と同時/ストップ・サービスを開始するようにスイッチを。

例えば systemctl --now enable foobar.service

systemctl --versionインストールされているバージョンを確認するために使用します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.