Это потому, что 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"
Итак, работы у вас на пару -кругов:
Либо сделайте ссылку /usr/lib64/qt4/bin/qmake
на один из secure_path
, т.е. что-то вроде:
sudo ln -s /usr/lib64/qt4/bin/qmake /usr/bin/qmake
Или добавьте /usr/lib64/qt4/bin
в /etc/sudoers
следующим образом:
Defaults secure_path="sbin:/bin:/usr/sbin:/usr/bin:/usr/lib64/qt4/bin"
В строке выше оставьте остальной текст как есть, только добавьте свой путь /usr/lib64/qt4/bin
в конце, как в примере.
Подробнее о проблеме с 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!