Установка 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 ).