Я использую Fedora CoreOS с включенным автоматическим средством обновления, что отлично подходит для моего варианта использования. Уже при интерактивном входе в систему система предупреждает о скором выключении/перезагрузке через консоль с теми же механизмами, которые описаны в ответах типа
Отправка сообщений о завершении работы всем клиентам с сервера
Однако «настоящими» пользователями этого сервера являются не пользователи Linux с доступом по SSH, а серверы доступа, такие как IRC или другие службы. Я хотел бы «поймать» предупреждающее сообщение о завершении работы и переслать его каждой из служб, s.t. они могут транслировать это.
Службы организованы с использованием непривилегированных контейнеров podman/docker, запускаемых через systemd (podman-генерировать-systemd
) пользовательские единицы.
Я могу (ab) использовать ExecStopPre
установка в блоке systemd на всегда спать 5м
перед выключением агрегата. Это не совсем то, что я хочу, так как я хотел бы иметь возможность немедленно перезапускать/останавливать службу, когда это делается вручную с помощью systemctl --user остановить/перезапустить
.
В настоящее время я вижу два пути, которые могли бы включить это:
- какой-то способ для юнитов прослушивать сообщения на стене и пересылать их
- какой-то способ указать
--игнорировать ExecStopPre
на консоли.
Последнее может быть достигнуто, хотя и неэргономично, с помощью systemctl --user edit --runtime
. Тем не менее, второй подход имеет время простоя (ab) использования ExecStopPre, хотя он уже может понадобиться для других целей.
Тем не менее, я был бы рад получить идеи о том, как добиться (1) или сделать (2) более приятной для работы. Или даже совершенно разные подходы к проблеме.