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 означает, что служба будет включена, когда система достигнет состояния предоставления многопользовательских неграфических сеансов.
Прежде чем включать службу, сначала проверьте, включена ли она уже или отключена, используя опцию 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]
Повторное включение службы означает сначала отключение службы, а затем ее повторное включение. Это удаляет символические ссылки службы и создает их заново.
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 сначала удаляются, а затем создаются снова. Она не запускает и не останавливает службу; служба останется в своем исходном состоянии.
Обратите внимание, что при повторном включении используются только имена служб и не принимаются пути.
Используйте 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.