У меня есть служба, которая запускает пакетные задания на нескольких лабораторных машинах. Лабораторные машины - это настольные компьютеры, и я хочу запускать службу только в том случае, если в данный момент не зарегистрирован ни один пользователь. Это означает:
- Когда пользователь входит в систему, служба должна быть остановлена.
- Когда последний пользователь выходит из системы, служба должна быть запущена.
Моя текущая идея - использовать Conflicts=
, но у этого есть ряд проблем:
- Служба не запускается снова, когда последний пользователь выходит из системы.
- Запуск службы вручную приведет к принудительному выходу из системы всех пользователей.
- Я не знаю, как создать глобальные сервисы (например, мне понадобится
Conflicts=user@*.service
).
Как определить такой сервис systemd без вышеуказанных проблем?