Установка MAINPID из контейнера podman

Я хотел бы отправить системное уведомление с готовностью и основным pid. К сожалению, похоже, что systemd не справляется с переводом pids из разных пространств имен. (Просто догадка...)

В частности, я смотрю сервис с:

      ExecStart=podman run --rm --cgroups=disabled -v /run/systemd:/run/systemd ... script.sh

И запущенный скрипт делает:

      echo "MAINPID=$$" | nc -uUN -w0 /run/systemd/notify

Кажется, это ничего не меняет. Для MAINPID установлено значение conman (по умолчанию) или podman (--sdnotify=ignore). Опять же, я эффективно отправляюMAINPID=1изнутри работающего контейнера.

Есть ли здесь какое-то обходное решение, позволяющее гарантировать, что конкретный процесс внутри службы/контейнера вместо этого станет MAINPID?

1 ответ

Использование пути в , начинающегося со знака плюса, указывает systemd выполнить команду от имени пользователя root. Я узнал, что systemd принимает отправленный MAINPID, когда он отправляется из неожиданного процесса, если процесс запущен от имени пользователя root.

Если вы хотите поэкспериментировать, вы можете попробовать

      ExecStartPost=+/some/path

Ссылки: я провел эксперимент с системными службами systemd User= и ExecStartPost=ExecStartPost= (см. комментарий GitHub ).

Другие вопросы по тегам