Debian:使用 startx 的 xinit 总是返回退出代码 0

Debian:使用 startx 的 xinit 总是返回退出代码 0

我正在使用 systemd 服务中的 startx 启动 kiosk 模式应用程序(基于 Electron)。我需要在应用程序以指定的退出代码退出时停止服务。运行服务的用户不在 sudoers 组中,因此我无法使用 systemctl 停止服务。

启动应用程序的脚本返回应用程序的退出代码,但startx始终返回退出代码0。

如何在 startx 或 xinit 中传播退出代码以提供应用程序正确的退出代码?

Systemd 服务代码:

[Unit]
Description="kiosk mode service"

[Service]
User=kiosk-user
WorkingDirectory=/home/kiosk
ExecStart=/home/kiosk-user/run_x.sh
Restart=on-failure
SuccessExitStatus=999
RestartSec=1

[Install]
WantedBy=multi-user.target

run_x.sh代码:

#!/bin/bash

startx /home/kiosk/run_application.sh --
ret=$?
echo "run_x.sh returned ret: $ret"
exit $ret

run_application.sh代码:

#!/bin/bash

/home/kiosk/startelectron

ret=999

echo "run_application.sh returned ret code $ret"
exit $ret

从服务登录:

Nov 12 11:22:08 vendotel run_x.sh[3349]: run_application.sh returned ret code 999
Nov 12 11:22:09 vendotel run_x.sh[3312]: run_x.sh returned ret: 0

相关内容