Quelle est la différence entre «systemctl start» et «systemctl enable»?

84

J'ai installé MariaDB-server sur ma machine. Lors de la configuration, j’ai rencontré un problème, à savoir si je devais l’activer tout le temps, car le document que je suis suivi contient ces étapes.

sudo yum install mariadb mariadb-server 
sudo systemctl start mariadb.service  
sudo systemctl enable mariadb.service
Chathurika Senani
la source
2
Vous pouvez également enable et start avec le --nowswich de enablesous - commande, par exemple: systemctl enable sshd --now. La même chose est vraie pour la disablecommande à également stople service.

Réponses:

132

systemctl startet systemctl enablefaire des choses différentes.

enable accrochera l’unité spécifiée aux emplacements appropriés, afin qu’elle se lance automatiquement au démarrage, ou lorsque le matériel concerné est branché, ou dans d’autres situations en fonction de ce qui est spécifié dans le fichier de l’unité.

start démarre l'unité en ce moment.

disableet stopsont le contraire de ceux-ci, respectivement.

Cela signifie que lorsque vous installez MariaDB pour la première fois, vous souhaiterez peut-être l'exécuter systemctl enable mariadb.servicepour l'activer afin qu'il démarre au démarrage. Vous pouvez également vouloir exécuter systemctl start mariadb.service, ou simplement redémarrer, afin de démarrer MariaDB. Pour arrêter MariaDB, lancez-le systemctl stop mariadb.service(il redémarrera au prochain démarrage ou au démarrage manuel). Pour le désactiver afin qu'il ne démarre plus au démarrage, lancez systemctl disable mariadb.service.

Source: page de manuel systemctl

vurp0
la source
4
++++ pour une explication claire
sunleo
Alors, quand faut-il taper systemctl enable? Chaque fois que nous voulons exécuter le service systemd?
Goldname
Non, quand vous voulez le faire démarrer automatiquement. Si vous voulez empêcher le démarrage automatique, lancez-vous systemctl disable.
vurp0
Cela signifie que le service est démarré en tant que root? Comment puis-je démarrer le service en tant qu'utilisateur différent au démarrage?
Chaminda Bandara le
18

De la systemctlpage de manuel :

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.

Essentiellement, enablemarque le service pour le démarrage au démarrage et le startdémarre immédiatement.

muru
la source
quand devrions-nous permettre? Avons-nous seulement besoin de le faire une fois?
Goldname
@Goldname Vous l'activez la première fois que vous avez besoin de le démarrer au prochain démarrage. Une seule fois suffit,
muru
Qu'en est-il quand on l'édite? Devrons-nous réactiver?
Nom d'or le
@Goldname vous n'avez pas besoin de le réactiver.
Muru
Merci, et la même chose se passe si le fichier est déplacé dans un autre répertoire et / ou le système est redémarré?
Goldname
4

À partir de la version 220 de systemctl, l' activation et la désactivation prennent en charge un commutateur --now pour démarrer / arrêter les services simultanément à l'activation / désactivation.

par exemple systemctl --now enable foobar.service

Utilisez systemctl --versionpour vérifier votre version installée.

Gerardw
la source