Поиск по сайту:
В программировании, как и везде, ошибаться - значит рождаться заново. (Алан.Дж.Перлис)

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

15.08.2024
Как использовать команду 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]

 

Читать  Exa - Современная замена команды ls

В приведенных выше командах замените [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 сначала удаляются, а затем создаются снова. Она не запускает и не останавливает службу; служба останется в своем исходном состоянии.

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

Читать  Как выполнить Curl с помощью Kubectl

 

Как отключить службу в 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.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Большинство людей слышали о DevOps, но DevSecOps все еще довольно…

Спасибо!

Теперь редакторы в курсе.