Яка різниця між "systemctl start" та "systemctl enable"?


83

Я встановив 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службу.

Відповіді:


131

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.

Джерело: сторінка man systemctl


4
++++ для чіткого пояснення
sunleo

Отже, коли ми повинні набрати systemctl enable? Кожен раз, коли ми хочемо запустити системну службу?
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 вам не потрібно повторно вмикати його.
муру

Дякую, і те саме відбувається, якщо файл переміщено в інший каталог та / або перезавантажиться система?
Goldname

4

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

напр systemctl --now enable foobar.service

Використовуйте systemctl --versionдля перевірки встановленої версії.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.