Управление контейнером systemd-nspawn как модулем systemd

Это потому, что sudo работает только в пределах secure_path, определенных в /etc/sudoersили $PATH, установленных для sudo. Например, в моей системе

$ sudo env | grep PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

$ sudo cat /etc/sudoers | grep secure_path
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

Итак, работы у вас на пару -кругов:

  1. Либо сделайте ссылку /usr/lib64/qt4/bin/qmakeна один из secure_path, т.е. что-то вроде:

    sudo ln -s /usr/lib64/qt4/bin/qmake /usr/bin/qmake
    
  2. Или добавьте /usr/lib64/qt4/binв /etc/sudoersследующим образом:

    Defaults    secure_path="sbin:/bin:/usr/sbin:/usr/bin:/usr/lib64/qt4/bin"
    

    В строке выше оставьте остальной текст как есть, только добавьте свой путь /usr/lib64/qt4/binв конце, как в примере.

0
24.08.2019, 05:22
1 ответ

Подробнее о проблеме с github

https://github.com/systemd/systemd/issues/7105#issuecomment-467491778

Используйте флаг --kill-signal

[Service]
ExecStart=/usr/bin/systemd-nspawn --keep-unit --kill-signal=SIGTERM -M Fedora-Cloud-Base-30-1.2.x86_64 python3 -u /root/app.py
SyslogIdentifier=%N

перезагрузить systemd, запустить app.service и остановить app.service

systemctl daemon-reload
systemctl start app.service
systemctl stop app.service

Просмотр журналов

Aug 23 17:51:32 srv0 systemd[1]: Started app.service.
Aug 23 17:51:32 srv0 app[12994]: Spawning container Fedora-Cloud-Base-30-1.2.x86_64 on /var/lib/machines/Fedora-Cloud-Base-30-1.2.x86_64.raw.
Aug 23 17:51:32 srv0 app[12994]: Press ^] three times within 1s to kill container.
Aug 23 17:51:32 srv0 app[12994]: Failed to create directory /tmp/nspawn-root-71uVxm/sys/fs/selinux: Read-only file system
Aug 23 17:51:32 srv0 app[12994]: Failed to create directory /tmp/nspawn-root-71uVxm/sys/fs/selinux: Read-only file system
Aug 23 17:51:32 srv0 app[12994]: pid 1
Aug 23 17:51:35 srv0 app[12994]: Trying to halt container. Send SIGTERM again to trigger immediate termination.
Aug 23 17:51:35 srv0 app[12994]: received signal 15
Aug 23 17:51:35 srv0 app[12994]: exiting...
Aug 23 17:51:35 srv0 systemd[1]: Stopping app.service...
Aug 23 17:51:35 srv0 app[12994]: Container Fedora-Cloud-Base-30-1.2.x86_64 exited successfully.
Aug 23 17:51:35 srv0 systemd[1]: Stopped app.service.
Aug 23 17:51:35 srv0 systemd[1]: Stopped app.service.

Посмотрите, как SIGTERM передается в app.py!

1
28.01.2020, 02:39

Теги

Похожие вопросы