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.