# Управление службами через SYSTEMCTL в Linux ## Systemctl **Systemd** — система инициализации служб. **Systemctl** — утилита для управления службами ## Состояния службы |Состояние |Значение | |:---:|:---| | **loaded** | файл конфигурации юнита был обработан; | | **active (running)** | служба запущена с одним или несколькими выполняющимися процессами; | | **active (exited)** | единовременная настройка завершена успешно; | | **active (waiting)** | служба запущена, но ожидает событие; | | **inactive** | служба не запущена; | | **enabled** | служба будет запускаться во время начальной загрузки системы; | | **disabled** | служба не будет запускаться во время начальной загрузки системы; | | **static** | служба не может быть включена, но может быть автоматически запущен включенным юнитом. | ## Управление службами |Команда |Описание | |:---:|:---| | `systemctl status ` | отображение состояния службы | | `systemctl status rsyslog.service -l ` | отображение подробного состояния службы | | `systemctl stop ` | остановка службы | | `systemctl start ` | запуск службы | | `systemctl restart ` | перезапуск службы | | `systemctl reload ` | перезагрузка конфигурации службы | | `systemctl daemon-reload` | перезагрузка конфигурации всех служб | | `systemctl enable ` | включение автозапуска | | `systemctl disable ` | выключение автозапуска | | `systemctl mask ` | отключение возможности запуска службы | | `systemctl unmask ` | включение возможности запуска службы | | `systemctl enable --now ` | запуск службы и включение автозапуска | | `systemctl disable --now ` | остановка службы и включение автозапуска | ## Список служб |Команда |Описание | |:---:|:---| | `systemctl` | без параметров выводит состояние всех юнитов | | `systemctl --type=service` | вывод состояния юнитов указанного типа | | `systemctl list-units` | список юнитов, которые добавлены в systemd | | `systemctl list-units --type=service` | вывод списка всех загружаемых служб | | `systemctl list-units --type=service --all` | вывод списка всех служб | | `systemctl list-unit-files --type=service` | вывод списка служб и их состояние (кратко) | | `systemctl is-active ` | проверка, активна ли служба | | `systemctl is-enabled ` | проверка, включен ли автозапуск | | `systemctl --failed --type=service` | вывод списка только отказавших служб | | `systemctl list-dependencies ` | вывод списка зависимостей службы | | `systemctl list-dependencies --reverse` | вывод списка служб, которые зависят от указанной | ## Target Target группирует другие юниты и может запускать и останавливать их все вместе. При запуске системы используется **graphical.target** (для загрузки системы с графическим интерфейсом) или **multi-user.target** (для загрузки системы без графического интерфейса). Символическая ссылка **/etc/systemd/system/default.target** указывает на нужный target. Для проверки текущего **default.target** используется команда: ``` systemctl list-dependencies default.target ``` Вывод таргета по умолчанию: ``` systemctl get-default ``` эта команда читает символическую ссылку, расположенную в **/etc/systemd/system/default.target**, и отображает результат. Смена текущего target: ``` systemctl isolate .target ``` ## Создание юнита Файлы юнитов содержатся в каталоге ``` /etc/systemd/system ``` Для создания юнита нужно создать файл, например ``` touch test.service ``` и записать в файл следующее: ``` [Unit] Description=1c-server [Service] ExecStart=/etc/init.d/srv1cv83 [Install] WantedBy=multi-user.target ```