“systemctl start”和“systemctl enable”有什么区别?

Cha*_*ani 138 mariadb systemd

我在我的机器上安装了 MariaDB 服务器。在设置时,我遇到了一个问题,我是否必须一直启用它,因为我遵循的文档提供了这些步骤,

sudo yum install mariadb mariadb-server 
sudo systemctl start mariadb.service  
sudo systemctl enable mariadb.service
Run Code Online (Sandbox Code Playgroud)

vur*_*rp0 213

systemctl startsystemctl enable做不同的事情。

enable 将指定的单元挂钩到相关位置,以便它会在启动时自动启动,或在插入相关硬件时,或其他情况下,取决于单元文件中指定的内容。

start 立即启动设备。

disablestop分别与这些相反。

这意味着当您第一次安装 MariaDB 时,您可能希望运行systemctl enable mariadb.service以启用它,以便它在启动时启动。您可能还想运行systemctl start mariadb.service,或者只是重新启动,以启动 MariaDB。要停止 MariaDB,请运行systemctl stop mariadb.service(它将在下次启动或手动启动时再次启动)。要禁用它使其不再在启动时启动,请运行systemctl disable mariadb.service.

来源:systemctl 手册页

  • ++++ 清楚解释 (11认同)
  • 不,当您想让它自动启动时。如果你想阻止它自动启动,那么你可以运行“systemctldisable”。 (2认同)

mur*_*uru 25

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.
Run Code Online (Sandbox Code Playgroud)

本质上,enable将服务标记为在启动时启动,并start实际立即启动该服务。


ger*_*rdw 12

从 systemctl 版本 220 开始,启用禁用支持--now开关以在启用/禁用的同时启动/停止服务。

例如 systemctl --now enable foobar.service

使用systemctl --version检查您安装的版本。