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

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

7

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
Войдите, чтобы ставить лайкимне нравится
Лайков: +1
войдите, чтобы ставить лайки
7

Комментарии

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

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

Ваше имя:
Текст комментария: