Управление сервисами в Linux. Команда systemctl. Linux статьи
Написать статью
Войдите, чтобы писать статьи

Управление сервисами в Linux. Команда systemctl

9

Systemd в Linux. Команда systemctl

Что такое сервисы в Linux

Сервисы или службы — это программы, которые работают в системе Linux в фоновом режиме. Обычно они запускаются при загрузке системы. Большинство сервисов необходимы для полноценной работы системы, то есть они являются своего рода кирпичиками, из которых строится работающая система.

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

Чаще всего в Linux дистрибутивах для инициализации сервисов используется демон Systemd. К Systemd-дистрибутивам относятся Ubuntu, Debian, Linux Mint, Fedora, openSUSE, Solus и другие.

Есть дистрибутивы, которые не используют Systemd. Вместо Systemd могут использоваться такие системы инициализации, как Upstart, SysV.

В качестве примеров сервисов можно привести: веб-сервер Apache, Network Manager, файрвол Ufw и другие.

Для управления сервисами (Systemd) используется утилита systemctl. Ниже мы рассмотрим основные команды данной утилиты.

Список сервисов

Чтобы просмотреть список всех сервисов можно воспользоваться командой:

service --status-all

Список всех сервисов Systemd

Данная команда пробегает по алфавитному списку всех доступных сервисов и выполняет для них команду status.

В выводе команды используются следующие обозначения:

  • [ + ] - запущенный сервис.
  • [ - ] - остановленный сервис.
  • [ ? ] - для данного сервиса отсутствует команда status.

Запуск сервиса

Для запуска сервиса используется команда systemctl start имя_сервиса

sudo systemctl start ufw

Останов сервиса

Для остановки сервиса используется команда systemctl stop имя_сервиса

sudo systemctl stop ufw

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

Перезапуск сервиса выполняется командой systemctl restart имя_сервиса

sudo systemctl restart ufw

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

Некоторые сервисы поддерживают «мягкую» перезагрузку. В этом случае сервис считывает связанные с ним файлы конфигурации, но не прерывает процесс сервиса. Для выполнения «мягкой» перезагрузки используется команда systemctl reload имя_сервиса. Не все сервисы поддерживают «мягкую» перезагрузку. Если она не поддерживается, то появится сообщение вида: Failed to reload ufw.service: Job type reload is not applicable for unit ufw.service.

Автозагрузка сервисов

Чтобы сервис стартовал (загружался) при запуске системы, его нужно включить в список автозагрузки. Для этого используется команда systemctl enable имя_сервиса

sudo systemctl enable ufw

Synchronizing state of ufw.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable ufw

Чтобы включить сервис в автозапуск и сразу же запустить используется команда:

sudo systemctl --now ufw

Чтобы удалить сервис из автозагрузки, используется команда systemctl disable имя_сервиса

sudo systemctl disable ufw

systemctl enable disable

Статус сервиса

Для вывода информации (статуса) сервиса используется команда systemctl status имя_сервиса

systemctl status ufw

systemctl status

Чтобы проверить, запущен ли в данный момент сервис, используется команда systemctl is-active имя_сервиса

systemctl is-active ufw

acive

Чтобы проверить, включен ли сервис для автозапуска при загрузке системы, используется команда systemctl is-enabled имя_сервиса

systemctl is-enabled ufw

enabled

systemctl is-enabled is-active

Заключение

Мы рассмотрели наиболее часто используемые команды утилиты systemctl. Полный список команд и опций утилиты systemctl можно получить, выполнив:

man systemctl
Лайков: +6
войдите, чтобы ставить лайки
9
  • Опубликовано: 30.08.2019

Комментарии

VadimAndy
Активный пользователь
Активный
31.08.2019
06:12
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Сам юзаю
Валерий
31.08.2019
08:30
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
service --status-all
bash: service: команда не найдена
tox
31.08.2019
11:15
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийВалерийРодительский комментарий
+1
войдите, чтобы ставить лайки
А у вас дистрибутив точно systemd использует?
BS666
Активный пользователь
Активный
31.08.2019
13:23
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийtoxРодительский комментарий
+2
войдите, чтобы ставить лайки
Все правильно service --status-all - Это не команда systemctl
tox
31.08.2019
15:40
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийBS666Родительский комментарий
+1
войдите, чтобы ставить лайки
А. Тфу. Туплю жестоко.
Мистер
01.09.2019
14:33
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+2
войдите, чтобы ставить лайки
А в Арчах что используется? Странно что его не упоминаете, вместо пачки debian based
МаловатоБудет
01.09.2019
22:37
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Блин, не плохо бы добавить про edit существующих демона, с возможностью перепределения текущих значений.
Про то где правильно создавать свой демон.
Про добавление логирования своего демона в journald.
Про крон в системд.
a
12.09.2020
09:22
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Вместо: sudo systemctl --now ufw
Надо: sudo systemctl enable --now ufw
Иван
16.06.2024
14:37
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Хорошая статья, хотелось бы увидеть статью про то как написать сервис

Написать комментарий

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила