В чем разница между «запуском systemctl» и «включением systemctl»?

84

Я установил MariaDB-сервер на свою машину. При настройке я столкнулся с проблемой, должен ли я включать его все время, поскольку документ, которому я следую, предоставляется с этими шагами,

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службы.

Ответы:

132

systemctl startи systemctl enableделать разные вещи.

enable подключит указанный модуль в соответствующие места, чтобы он автоматически запускался при загрузке или при подключении соответствующего оборудования, или в других ситуациях, в зависимости от того, что указано в файле модуля.

start запускает устройство прямо сейчас.

disableи stopявляются противоположностью им, соответственно.

Это означает, что при первой установке MariaDB может потребоваться запустить systemctl enable mariadb.serviceее, чтобы она запускалась при загрузке. Вы также можете запустить systemctl start mariadb.serviceили просто перезагрузиться, чтобы запустить MariaDB. Чтобы остановить MariaDB, запустите systemctl stop mariadb.service(он запустится снова при следующей загрузке или при запуске вручную). Чтобы отключить его, чтобы он больше не запускался при загрузке, запустите systemctl disable mariadb.service.

Источник: manctl systemctl

vurp0
источник
4
++++ для ясного объяснения
sunleo
Итак, когда мы должны набрать systemctl enable? Каждый раз, когда мы хотим запустить сервис systemd?
Goldname
Нет, когда вы хотите, чтобы это началось автоматически. Если вы хотите остановить автоматический запуск, тогда вы запускаете systemctl disable.
vurp0
Это означает, что служба запускается как root? Как я могу запустить службу как другой пользователь при загрузке?
Чаминда Бандара
18

Из за 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
@Goldname Вы включаете его при первом запуске при следующей загрузке. Достаточно только одного раза,
Муру
Как насчет того, когда мы редактируем это? Нужно ли нам снова включить?
Goldname
@ Имя золота, тебе не нужно включать его снова.
Муру
Спасибо, и то же самое происходит, если файл перемещается в другой каталог и / или система перезагружается?
Goldname
4

Начиная с версии 220 systemctl, включите и отключите поддержку ключа --now для запуска / остановки служб одновременно с включением / отключением.

например systemctl --now enable foobar.service

Используйте systemctl --versionдля проверки установленной версии.

gerardw
источник