flip:linux:systemd
Различия
Показаны различия между двумя версиями страницы.
Следующая версия | Предыдущая версия | ||
flip:linux:systemd [2025/03/26 18:51] – создано flip | flip:linux:systemd [2025/03/31 15:17] (текущий) – flip | ||
---|---|---|---|
Строка 5: | Строка 5: | ||
Каталог с конфигурациями: | Каталог с конфигурациями: | ||
Пример: | Пример: | ||
+ | |||
+ | |||
+ | ===== Проверить синтаксис ===== | ||
+ | |||
+ | < | ||
+ | systemd-analyze verify / | ||
+ | </ | ||
Строка 20: | Строка 27: | ||
</ | </ | ||
- | Отключить | + | |
+ | ==== Отключить | ||
< | < | ||
- | systemctl disable | + | systemctl disable |
</ | </ | ||
- | ===== Параметры | + | ===== Настройка ===== |
- | ==== Ключи | + | ==== Основные параметры [Unit] |
- | * **Wants** - Ожидает | + | (Общие для |
- | * **Requires** - Требует | + | |
- | * **Before** - Перед | + | |
- | * **After** - После | + | |
- | * **WantedBy** - Ожидается цель/служба | + | |
- | * **RequiresBy** - Требуется цель/ | + | |
+ | < | ||
+ | [Unit] | ||
+ | Description=Описание сервиса | ||
+ | Documentation=URL или man-страница | ||
+ | After=network.target | ||
+ | Before=some.target | ||
+ | Requires=postgresql.service | ||
+ | Wants=redis.service | ||
+ | Conflicts=old_service.service | ||
+ | </ | ||
- | ==== Параметры перезапуска службы ==== | ||
- | * **no** - никогда | + | ==== Параметры |
- | * **always** - всегда | + | |
- | * **on-success** - успешно | + | |
- | * **on-failure** - не успешно | + | |
- | * **on-abnormal** - не нормальный | + | |
- | * **on-abort** - при прирывании | + | |
- | * **on-watchdog** - Сторожевой таймер (Watchdog timer) — аппаратно реализованная схема контроля над зависанием системы. | + | |
- | ^ Restart settings/ | + | (Специфичные для сервисов) |
- | | Clean exit code or signal \\ Корректый код выхода или сигнал | | X | X | | | | | | + | |
- | | Unclean exit code \\ Неккоректный код | + | |
- | | Unclean signal \\ Некорректный | + | |
- | | Timeout | | X | | X | X | | | | + | |
- | | Watchdog \\ Сторожевой таймер | | X | | X | X | | X | | + | |
+ | === Тип сервиса === | ||
- | ==== Список | + | < |
+ | Type=simple | ||
+ | Type=forking | ||
+ | Type=oneshot | ||
+ | Type=notify | ||
+ | Type=idle | ||
+ | Type=dbus | ||
+ | Type=exec # Как simple, но ждёт завершения ExecStart= перед запуском других юнитов | ||
+ | </ | ||
- | * **default.target** - модуль по-умолчанию | + | === Команды === |
- | * **graphical.target** | + | |
- | * **multi-user.target** - запуск | + | < |
- | * **network-online.target** | + | ExecStart=/ |
- | * **network.target** - сеть | + | ExecStartPre=/ |
- | * **network-pre.target** - запуск до настройки сети (используется | + | ExecStartPost=/ |
- | * **boot-complete.target** - успешная | + | ExecReload=/ |
+ | ExecStop=/ | ||
+ | ExecStopPost=/ | ||
+ | </ | ||
+ | |||
+ | === Управление процессом === | ||
+ | |||
+ | < | ||
+ | User=nobody | ||
+ | Group=nogroup | ||
+ | WorkingDirectory=/ | ||
+ | Environment=" | ||
+ | EnvironmentFile=/ | ||
+ | PIDFile=/ | ||
+ | UMask=0022 | ||
+ | Nice=-10 | ||
+ | OOMScoreAdjust=-500 | ||
+ | </ | ||
+ | |||
+ | === Рестарт и таймауты === | ||
+ | |||
+ | < | ||
+ | Restart=no | ||
+ | Restart=on-success | ||
+ | Restart=on-failure | ||
+ | Restart=on-abnormal | ||
+ | Restart=on-watchdog | ||
+ | Restart=always | ||
+ | RestartSec=5s | ||
+ | TimeoutStartSec=30s | ||
+ | TimeoutStopSec=10s | ||
+ | TimeoutSec=30s | ||
+ | RuntimeMaxSec=1h | ||
+ | </ | ||
+ | |||
+ | === Лимиты === | ||
+ | |||
+ | < | ||
+ | LimitNOFILE=65536 | ||
+ | LimitNPROC=512 | ||
+ | LimitCORE=infinity | ||
+ | MemoryLimit=2G | ||
+ | CPUQuota=150% | ||
+ | </ | ||
+ | |||
+ | === Дополнительно === | ||
+ | |||
+ | < | ||
+ | StandardOutput=journal | ||
+ | StandardError=inherit | ||
+ | SyslogIdentifier=myapp | ||
+ | KillMode=process | ||
+ | RemainAfterExit=yes | ||
+ | SuccessExitStatus=143 | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Секция [Install] ==== | ||
+ | |||
+ | (Для '' | ||
+ | |||
+ | < | ||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | Alias=myservice.alias | ||
+ | RequiredBy=other.target | ||
+ | Also=other.service | ||
+ | </ | ||
Строка 92: | Строка 169: | ||
# здесь используется ключи времени с указанием цели или другой службы | # здесь используется ключи времени с указанием цели или другой службы | ||
WantedBy=graphical.target | WantedBy=graphical.target | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Создание пользовательской службы ===== | ||
+ | |||
+ | * Пользовательские сервисы работают с ключом ''< | ||
+ | * Они выполняются с правами текущего пользователя | ||
+ | * Для некоторых операций (например, | ||
+ | * Логи можно просматривать через ''< | ||
+ | |||
+ | ==== Создание структуры каталогов ==== | ||
+ | |||
+ | Сначала создайте необходимые каталоги в вашей домашней директории | ||
+ | |||
+ | < | ||
+ | mkdir -p ~/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Создание unit-файла ==== | ||
+ | |||
+ | |||
+ | Создайте файл сервиса в этом каталоге, | ||
+ | |||
+ | < | ||
+ | nano ~/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Активация пользовательского менеджера systemd ==== | ||
+ | |||
+ | Перед использованием убедитесь, | ||
+ | |||
+ | < | ||
+ | systemctl --user enable --now dbus.service | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Управление сервисом ==== | ||
+ | |||
+ | < | ||
+ | # Перечитать конфигурации | ||
+ | systemctl --user daemon-reload | ||
+ | |||
+ | # Включить автозагрузку сервиса | ||
+ | systemctl --user enable myservice.service | ||
+ | |||
+ | # Запустить сервис | ||
+ | systemctl --user start myservice.service | ||
+ | |||
+ | # Проверить статус | ||
+ | systemctl --user status myservice.service | ||
+ | |||
+ | # Остановить сервис | ||
+ | systemctl --user stop myservice.service | ||
+ | |||
+ | # Отключить автозагрузку | ||
+ | systemctl --user disable myservice.service | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Автозапуск при входе пользователя ==== | ||
+ | |||
+ | По умолчанию пользовательские сервисы не запускаются при загрузке системы, | ||
+ | |||
+ | Для включения постоянной работы | ||
+ | |||
+ | < | ||
+ | sudo loginctl enable-linger username | ||
</ | </ | ||
flip/linux/systemd.1743015109.txt.gz · Последнее изменение: 2025/03/26 18:51 — flip