¿Cuál es la diferencia entre "systemctl start" y "systemctl enable"?

84

Instalé el servidor MariaDB en mi máquina. Al configurar me encontré con un problema si tengo que habilitarlo todo el tiempo ya que el documento que sigo se proporciona con estos pasos,

sudo yum install mariadb mariadb-server 
sudo systemctl start mariadb.service  
sudo systemctl enable mariadb.service
Chathurika Senani
fuente
2
También se puede enable y start con el --nowswich del enablesubcomando, por ejemplo: systemctl enable sshd --now. Lo mismo es cierto para el disablecomando al stopservicio también .

Respuestas:

132

systemctl starty systemctl enablehacer cosas diferentes.

enable conectará la unidad especificada a lugares relevantes, de modo que se iniciará automáticamente en el arranque, o cuando se conecte el hardware relevante, u otras situaciones dependiendo de lo que se especifique en el archivo de la unidad.

start inicia la unidad ahora mismo.

disabley stopson lo contrario de estos, respectivamente.

Esto significa que cuando instales MariaDB por primera vez, es posible que desees ejecutarlo systemctl enable mariadb.servicepara habilitarlo para que comience en el arranque. También es posible que desee ejecutar systemctl start mariadb.service, o simplemente reiniciar, para iniciar MariaDB. Para detener MariaDB, ejecute systemctl stop mariadb.service(se iniciará nuevamente en el próximo arranque o cuando lo inicie manualmente). Para deshabilitarlo para que ya no se inicie en el arranque, ejecute systemctl disable mariadb.service.

Fuente: página man de systemctl

vurp0
fuente
44
++++ para una explicación clara
sunleo
Entonces, ¿cuándo debemos escribir systemctl enable? ¿Cada vez que queremos ejecutar el servicio systemd?
Goldname
No, cuando quieras que se inicie automáticamente. Si quieres evitar que se inicie automáticamente, entonces corres systemctl disable.
vurp0
Eso significa, ¿el servicio se inicia como root? ¿Cómo puedo iniciar el servicio como otro usuario en el arranque?
Chaminda Bandara
18

Desde la página del systemctlmanual :

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.

Básicamente, enablemarca el servicio para iniciarse en el arranque y, de starthecho, lo inicia de inmediato.

muru
fuente
¿Cuándo debemos habilitar? ¿Solo necesitamos hacerlo una vez?
Goldname
@Goldname Lo habilita la primera vez que necesita que se inicie en el próximo arranque. Solo una vez es suficiente,
muru
¿Qué pasa cuando lo editamos? ¿Necesitaremos volver a habilitarlo?
Goldname
@Goldname no necesita volver a habilitarlo.
muru
Gracias, y lo mismo ocurre si el archivo se mueve a un directorio diferente y / o se reinicia el sistema.
Goldname
4

A partir de la versión 220 de systemctl, habilite y deshabilite la compatibilidad con un interruptor --now para iniciar / detener servicios concurrentes con la habilitación / deshabilitación.

p.ej systemctl --now enable foobar.service

Use systemctl --versionpara verificar su versión instalada.

gerardw
fuente