Службы в Linux управляются через файл конфигурации. Если в файл конфигурации службы внесены изменения, необходимо инициировать перезапуск службы, чтобы применить изменения. После перезапуска службы systemd повторно оценивает файл конфигурации и применяет изменения.
В этом руководстве я расскажу, как использовать systemctl для перезапуска службы в Linux.
Примечание: В это руководство включены команды и инструкции, выполняемые в Ubuntu 22.04. Команда будет работать без проблем в дистрибутивах, поставляемых с менеджером служб systemd.
Команда перезапуска systemctl
перезапуск команда по сути останавливает службу и запускает ее снова. Если служба или устройство не работает, команда перезапуска инициирует его работу.
Команда перезапуска не удаляет процессы, связанные со службой. Возьмем, к примеру, файловые дескрипторы, которые представляют собой неотрицательные идентификаторы, назначаемые операционной системой файлам, открытым службой. Если вы перезапустите службу, дескриптор файла, связанный с этой службой, останется там во время процесса перезапуска.
Если вы хотите сбросить все связанные процессы со службой, вам необходимо явно останавливаться сервис и начинать снова.
Как перезапустить службу
В Linux вы можете перезапустить службу, используя команду sudo systemctl инструмент командной строки с перезапуск вариант и указав его имя. Общий синтаксис приведен ниже:
судо перезапуск системы [ наименование услуги ]
Тебе понадобится судо права на перезапуск службы.
Например, перезапустим сш услуга.
судо systemctl перезапустите ssh.serviceЧтобы перезапустить несколько служб, добавьте имя каждой службы после перезапуск команда с пробелом.
судо systemctl перезапустите ssh.service smbd.serviceДругие команды перезапуска приведены в таблице ниже:
попробовать-перезапустить | Он останавливает или запускает указанную службу или службы, и если служба не запущена, она не запускает ее. |
перезагрузить или перезапустить | Перезагрузите поддерживаемую службу или службы, а если служба не поддерживается, перезапустите ее и активируйте. |
попробуй-перезагрузи или попробуй-перезапустить | Перезагрузите поддерживаемую службу или службы и, если служба не поддерживается, перезапустите ее, не активируя. |
В приведенных выше командах .услуга расширение не является обязательным.
Как автоматически перезапустить службу
В Linux, если служба выходит из строя, системный перезапустил его по умолчанию. Тем не менее, во многих случаях может потребоваться изменить способ перезапуска службы. Например, может потребоваться ручное действие в процессе отладки специального сервиса.
Файлы модулей systemd или служебные файлы расположены на /etc/systemd/система или /lib/systemd/система в основном в зависимости от того, как создается услуга. Чтобы просмотреть файлы модулей в Linux, используйте следующую команду:
лс / библиотека / системный / системаВы можете увидеть файлы конфигурации различных сервисов. Давайте откроем ssh.service файл с помощью нано редактор.
судо нано / библиотека / системный / система / ssh.serviceЗдесь вы можете изменить Перезапуск параметр. По умолчанию установлено значение при отказе . Другие варианты перезапуска службы перечислены ниже:
- Нет
- всегда
- при успехе
- при отказе
- ненормальный
- при прерывании
- сторожевой пес
Другая опция в файле службы устройства: Рестартсек который используется для указания количества секунд, по истечении которых служба будет перезапущена.
[ Услуга ]Перезапуск = всегда
Рестартсек '=' 5
Эти инструкции означают, что служба перезапустится при загрузке и, если она будет прервана, будет перезапущена через 5 секунд.
После изменения параметра выполните следующую команду, чтобы применить изменения.
судо systemctl-демон перезагрузкиДругие важные настройки, которые следует принять во внимание: Стартлимитинтервалсек и StartLimitBurst . Эти параметры полезны для установки максимального времени и максимального количества повторных попыток перезапуска службы.
[ Единица ]Стартлимитинтервалсек '=' 300
StartLimitBurst '=' 4
Приведенная выше инструкция указывает, что systemd автоматически прекратит попытки перезапустить службу, если она не запустится через 300 секунд и 4 повторных попытки.
Чтобы проверить, перезапускается ли служба через 5 секунд или нет, завершите службу, используя PID службы и убийство команда.
судо убийство -9 [ ПИД ]Через 5 секунд сервис будет перезапущен; использовать журналctl команда для проверки статуса ssh.service .
журналctl -в ssh.service
Как перезапустить службу при перезапуске зависимой службы
В Linux многие службы взаимозависимы, и аналогичным образом их необходимо перезапускать при перезапуске зависимой службы.
В файле службы модуля есть три различных варианта перезапуска службы с перезапуском зависимой службы.
- Часть
- Привязывается к
- Требует
Все эти варианты выполняют одну и ту же задачу.
Давайте возьмем пример ssh.service, который зависит от apparmor.service; модуль безопасности Linux для обеспечения необходимого доступа. Чтобы просмотреть зависимости службы в Linux, используйте системаctl с зависимости списка имя команды и службы.
список зависимостей systemctl ssh.service
Итак, если вы хотите перезапустить ssh.service при перезапуске apparmor.service, вам необходимо включить параметр PartOf, BindsTo или Requires вместе с именем службы в разделе [Unit] файла apparmor.service.
Откройте файл apparmor.service.
судо нано / библиотека / системный / система / Apparmor.serviceДобавьте следующую строку в раздел [Unit].
Часть =ssh.service
Сохраните файл и выполните команду daemon-reload.
судо systemctl демон-перезагрузкаТеперь перезапустите ssh.service а затем проверьте Apparmor.service бревно.
Вы заметите Apparmor.service одновременно перезапустил ssh.service перезапустил.
Заключение
Чтобы перезапустить службу или службы в Linux, системаctl команда используется с перезапуск вариант. системаctl — это утилита командной строки, используемая для управления службами systemd. перезапуск Опция запускает службу, а затем останавливает ее, активируя неактивную службу. Однако вы можете перезапустить службу, не активируя ее, используя команду попробовать-перезапустить вариант.