Рассмотрим типы unit-файлов:
- служба (.service)
- целевое состояние (.target)
- путь (.path)
- таймер (.timer)
- монтирование (.mount) /автомонтирование (.automount)
- устройство (.device)
- подкачка (.swap)
Заводские unit-файлы находятся в /lib/systemd/system, кастомизированные — в /etc/systemd/system. Информацию по unit-файлам можно посмотреть командам:
man systemd.unit
man systemd.service
Управление службами systemd
- systemctl status <имя службы>.service — посмотреть статус службы
- systemctl enable <имя службы>.service — добавить службу в автозагрузку
- systemctl disable <имя службы>.service — удалить службу из автозагрузки
- systemctl start <имя службы>.service — запустить службу
- systemctl stop <имя службы>.service — остановить службу
- systemctl restart <имя службы>.service — перезапустить службу
- systemctl reload <имя службы>.service — перечитать конфигурационный файл службы
- systemctl mask <имя службы>.service — замаскировать службу — делает невозможным запуск службы, даже если это требуется другой службой
- systemctl unmask <имя службы>.service — снять маскировку — сделать возможным запуск службы (файл юнита восстанавливается)
- systemctl reenable <имя службы>.service — выполнить disable, затем enable
- systemctl is-active <имя службы>.service — проверить, запущена ли служба
- systemctl list-unit-files —type=service — вывести список всех конфигурационных файлов службы<имя службы>.service — посмотреть статус службы
Целевые состояния systemd
- multi-user.target — многопользовательский режим без графического интерфейса
- graphical.target — многопользовательский режим с графическим интерфейсом
- rescue.target — однопользовательский режим (режим восстановления). Для работы в этом режиме у root должен быть задан пароль.
- reboot.target — перезагрузка системы
- halth.target — остановка системы
- Команда управления целевыми состояниями systemd:
- systemctl isolate имя.target — переключение на другое целевое состояние;
- systemctl get-default —force имя.target — изменить цель по умолчанию.
- systemctl set-default — получить информацию о текущей цели по умолчанию
- В systemd реализована совместимость с уровнями выполнения (runlevel) SysV Init: для каждого стандартного целевого состояния существует символическая ссылка вида runleveleN.target — где N — уровень выполнения.
- В частности, использую номер уровня выполнения, при запуске ядра можно попросить ядро запустить systemd с указанным целевым состоянием, соответствующим уровню выполнению.
- Уровни выполнения (runlevel) и соответствующие им целевые состояния systemd:
- 0 — halth.target;
- 1, s, single — rescue.target;
- 2, 3 — multi-user.target;
- 5 — graphical.target;
- 6 — reboot.target.
sa@astra:~$ systemctl cat ssh.service # /lib/systemd/system/ssh.service [Unit] Description=OpenBSD Secure Shell server Documentation=man:sshd(8) man:sshd_config(5) After=network.target auditd.service ConditionPathExists=!/etc/ssh/sshd_not_to_be_run [Service] EnvironmentFile=-/etc/default/ssh ExecStartPre=/usr/sbin/sshd -t ExecStart=/usr/sbin/sshd -D $SSHD_OPTS ExecReload=/usr/sbin/sshd -t ExecReload=/bin/kill -HUP $MAINPID KillMode=process Restart=on-failure RestartPreventExitStatus=255 Type=notify RuntimeDirectory=sshd RuntimeDirectoryMode=0755 [Install] WantedBy=multi-user.target Alias=sshd.service
Просмотр и редактирование юнитов
- systemctl — активные юниты
- systemctl -a — все юниты
- systemctl —typer=тип — юниты указанного типа
- systemctl cat имя_юнита — просмотр юнита
- systemctl -full edit имя_юнита — редактирование юнита
- systemctl —force —full edit имя_юнита — создание юнита
- Посмотрим список юнитов типа .service: systemctl -a —type=service
- Посмотрим файл юнита rc-local.service: systemctl cat rc-local.service