ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как использовать команду systemctl для включения и отключения служб

Как использовать команду systemctl для включения и отключения служб

Systemd – это одна из широко используемых менеджеров служб в Linux, который поставляется с утилитой командной строки systemctl для управления службами systemd, такими как запуск службы, остановка, включение и деактивация.

В этой статье мы объясним, как включить службу в Linux с помощью команды systemctl и как ее отключить.

 

Что означает включение службы?

Включение службы отличается от запуска службы. Команда systemctl start только запускает службу и сохраняет ее включенной до тех пор, пока она не будет остановлена вручную перед загрузкой или перезагрузкой системы. С другой стороны, включение службы означает, что служба будет запущена при загрузке.

При включении служба создает символическую ссылку в целевом каталоге, гарантируя, что служба будет включена при загрузке. Цель указана в разделе [Install] файла службы с помощью директивы WantedBy.

andreyex@andreyex: -
GNU nano 6.2
/lib/systemd/system/ssh.service
After=network.target auditd.service
ConditionPathExists=!/etc/ssh/sshd_not_to_be_run

[Service]
EnvironmentFile=-/etc/default/ssh
ExecStartPre=/usr/sbin/sshd - t
ExecStart=/usr/sbin/sshd -D $SSHD_OPTS
ExecReload=/usr/sbin/sshd -t
ExecReload=/bin/kill -HUP SMAINPID
KillMode=process
Restart=on-failure
RestartPreventExitStatus=255
Type=notify
RuntimeDirectory=sshd
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target Alias=sshd.service
Help Exit
Write Out W Where Is
Read File
Replace
Cut
Paste
Execute
Justify
Location Go To Line

 

На приведенном выше изображении целевым является multi-user.target, который указывает уровень запуска системы. Многопользовательский.target означает, что служба будет включена, когда система достигнет состояния предоставления многопользовательских неграфических сеансов.

 

Как включить службу в Linux

Прежде чем включать службу, сначала проверьте, включена ли она уже или отключена, используя опцию is-enabled в systemctl.

sudo systemctl is-enabled [Service-Name]

 

Чтобы разрешить запуск одной или нескольких служб при загрузке, используйте команду systemctl с параметром enable.

sudo systemctl enable [Service-Name]

 

В приведенных выше командах замените [Service-Name] на имя службы или путь к службе.

Например, для включения службы SSH.

sudo systemctl enable ssh.service
andreyex@andreyex: -
andreyex@andreyex: $sudo systemctl enable ssh.service
Synchronizing state of ssh.service with SysV service script with /lib/systemd/sy stemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ssh
Created symlink /etc/systemd/system/sshd.service ->/lib/systemd/system/ssh.servi се.
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service -+/lib/s ystemd/system/ssh.service.
andreyex@andreyex: $

При включении создается multi-user.target.wants в /etc/systemd/system, который содержит символическую ссылку на файл службы.

Включение службы с помощью команды systemctl enable не активирует службу. Чтобы включить службу и немедленно запустить ее, используйте опции enable и –now.

sudo systemctl enable --now [Service-Name]

Как повторно включить службу в Linux

Повторное включение службы означает сначала отключение службы, а затем ее повторное включение. Это удаляет символические ссылки службы и создает их заново.

sudo systemctl reenable [Service-Name]

 

Давайте повторно включим службу SSH, используя приведенную выше команду.

sudo systemctl reenable ssh.service

 

andreyex@andreyex: -
andreyex@andreyex: $ sudo systemctl reenable ssh.service
Removed /etc/systemd/system/sshd.service.
Removed /etc/systemd/system/multi-user.target.wants/ssh.service.
Created symlink /etc/systemd/system/sshd.service -> /lib/systemd/system/ssh.servi се.
Created symlink /etc/systemd/system/multi-user.target.wants/ssh.service ->/lib/s ystemd/system/ssh.service.
andreyex@andreyex:

 

Как видно из выходных данных, файлы с символическими ссылками из каталога /etc/systemd/system сначала удаляются, а затем создаются снова. Она не запускает и не останавливает службу; служба останется в своем исходном состоянии.

Обратите внимание, что при повторном включении используются только имена служб и не принимаются пути.

 

Как отключить службу в Linux

Используйте systemctl с опцией disable для отключения одной или нескольких служб.

sudo systemctl disable [Service-Name]

 

Она не указывает путь к файлу службы.

Например, давайте отключим службу ssh.

sudo systemctl disable ssh.service

 

andreyex@andreyex: $ sudo systemctl disable ssh.service
[sudo] password for andreyex:
Synchronizing state of ssh.service with SysV service script with /lib/systemd/sy stemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable ssh
Removed /etc/systemd/system/sshd.service.
Removed /etc/systemd/system/multi-user.target.wants/ssh.service. 
andreyex@andreyex: $

Отключение службы не остановит службу, поскольку она будет продолжать работать, если не будет остановлена вручную или система не будет перезагружена.

Чтобы немедленно отключить и остановить службу, используйте опцию –now в systemctl.

sudo systemctl disable --now [Service-Name]

Заключение

Чтобы включить службу при загрузке, используется команда systemctl с параметром enable. Для этого требуется одно или несколько имен служб / модулей или путей. В статье мы описали, как включить службу и как повторно включить службу. Более того, мы также учли упоминание об отключении служебных команд. Чтобы узнать больше об утилите командной строки systemctl, используйте команду man systemctl.

Exit mobile version