четверг, 5 октября 2023 г.

Управление службами systemctl

 В этой статье нас интересуют только модули, которые имеют суффикс .service, то есть службы. 

Благодаря утилите systemctl список сервисов легко получить:

systemctl list-units --type=service

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

Запуск и остановка служб

Чтобы запустить службу используйте команду start. Например, для запуска apache2 выполним:

sudo systemctl start apache2.sevice

или 

sudo systemctl start apache2

Для установки службы нужно использовать команду stop. На примере apache2:

sudo systemctl stop apache2.service

Перезапуск и перезагрузка

Для того, чтобы перезапустить службу, используйте команду restart. Например, мы внесли изменения в конфигурацию веб-сервера и теперь нам нужно перезапустить apache2, нужно выполнить:

sudo systemctl restart apache2.service

Некоторые приложения поддерживают перезагрузку файлов конфигурации без перезапуска всей службы. В таком случае вы можете использовать команду reload. Например, если вы работаете c nginx в качестве веб-сервера, после изменения конфигурационных файлов можно выполнить reload:

sudo systemctl reload nginx.service

Но если вы не уверены, умеет ли служба перезагружать конфигурацию, воспользуйтесь командой reload-or-restart. В таком случае systemd перезагрузит конфигурацию или всю службу:

sudo systemctl reload-or-restart apache2.service

Включение и отключение

Основное предназначение диспетчера systemd — запускать службы при загрузке системы. Но все команды, перечисленные выше, относились к работе только во время текущего сеанса. 

Чтобы включить автозагрузку приложения, воспользуйтесь командой enable. После этого systemd создаст символическую ссылку из служебного файла — /etc/systemd/system — в место, где диспетчер ищет приложения для автозапуска.

sudo systemctl enable apache2.service 

Чтобы отключить автозапуск, используйте disable. При этом символическая ссылка будет удалена.

sudo systemctl disable apache2.service

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

Проверка статуса

Чтобы проверить статус службы в системе, нужно использовать команду status

Например, команда sudo systemctl status apache2.service отобразит статус, процессы в иерархии контрольных групп и фрагмент журнала.

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

Помимо развёрнутого отчёта о статусе службы диспетчер systemd также предоставляет методы для проверки конкретных статусов. Это позволяет обернуть множество проверок в скрипты и проще работать с результатом.

  • is-active. Проверяет, активен ли модуль. Возвращает active или inactive.
  • is-enabled. Проверяет, включена ли автозагрузка службы. Возвращает enabled или disabled.
  • is-failed. Проверяет, находится ли юнит в работе. Возвращает active, если всё работает корректно, failed — если ошибка. При этом вы можете получить также unknown или inactive, если служба была остановлена вручную.


Комментариев нет:

Отправить комментарий