Jaka jest różnica między „startem systemctl” a „włączeniem systemctl”?

83

Zainstalowałem serwer MariaDB na moim komputerze. Podczas konfigurowania napotkałem problem, czy muszę go cały czas włączać, ponieważ dokument, który obserwuję, zawiera następujące kroki,

sudo yum install mariadb mariadb-server 
sudo systemctl start mariadb.service  
sudo systemctl enable mariadb.service
Chathurika Senani
źródło
2
Możesz także enable i start za pomocą --nowpodkomendy enable, np systemctl enable sshd --now. : To samo dotyczy disablepolecenia do stopusługi.

Odpowiedzi:

131

systemctl starti systemctl enablerobić różne rzeczy.

enable zaczepi określoną jednostkę w odpowiednich miejscach, dzięki czemu zacznie się automatycznie przy rozruchu lub po podłączeniu odpowiedniego sprzętu lub w innych sytuacjach, w zależności od tego, co podano w pliku jednostki.

start uruchamia teraz jednostkę.

disablei stopsą odpowiednio ich przeciwieństwem.

Oznacza to, że kiedy po raz pierwszy instalujesz MariaDB, możesz chcieć uruchomić, systemctl enable mariadb.serviceaby go włączyć, aby zaczął się przy rozruchu. Możesz także uruchomić systemctl start mariadb.servicelub po prostu zrestartować komputer, aby uruchomić MariaDB. Aby zatrzymać MariaDB, uruchom systemctl stop mariadb.service(uruchomi się ponownie przy następnym uruchomieniu lub po ręcznym uruchomieniu). Aby go wyłączyć, aby nie uruchamiał się już przy rozruchu, uruchom systemctl disable mariadb.service.

Źródło: strona podręcznika systemctl

vurp0
źródło
4
++++ dla jasnego wyjaśnienia
sunleo
Kiedy więc należy wpisać systemctl enable? Za każdym razem, gdy chcemy uruchomić usługę systemd?
Goldname
Nie, jeśli chcesz, aby uruchomił się automatycznie. Jeśli chcesz zatrzymać automatyczne uruchamianie, uruchom systemctl disable.
vurp0
Oznacza to, czy usługa jest uruchamiana jako root? Jak mogę uruchomić usługę jako inny użytkownik podczas rozruchu?
Chaminda Bandara,
18

Z strony systemctlpodręcznika :

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.

Zasadniczo enableoznacza usługę do uruchomienia podczas rozruchu i startfaktycznie uruchamia usługę natychmiast.

muru
źródło
kiedy powinniśmy włączyć? Czy musimy to zrobić tylko raz?
Goldname
@Goldname Włączasz go przy pierwszym uruchomieniu. Tylko raz wystarczy
muru
A kiedy go edytujemy? Czy będziemy musieli ponownie włączyć?
Goldname
@Goldname nie musisz go ponownie włączać.
muru
Dzięki, to samo dotyczy przeniesienia pliku do innego katalogu i / lub ponownego uruchomienia systemu?
Goldname
4

Od wersji systemctl 220 włącz i wyłącz obsługę przełącznika - teraz, aby uruchomić / zatrzymać usługi jednocześnie z włączaniem / wyłączaniem.

na przykład systemctl --now enable foobar.service

Służy systemctl --versiondo sprawdzania zainstalowanej wersji.

gerardw
źródło