如何防止 X 服务器关闭?

如何防止 X 服务器关闭?

我在 Raspberry Pi 上运行无头图形应用程序(信息亭)。到目前为止一切顺利:Raspbian 使用用户pi和触发器自动登录,只要我没有通过 SSH 登录,.bash_profile它就会依次调用,并负责启动 Java 图形应用程序。startx.xinitrc

当应用程序自动更新时会出现问题。为了修改它自己的(打开的)文件,它会创建一个单独的无头更新过程(使用nohup bash update_script.sh),然后退出。更新本身进行得很顺利,因为更新后文件是正确的。但是,我无法在脚本结束时成功重新启动应用程序,我得到:

X11:无法打开显示:0

据我了解,当 JVM 进程结束时,X 服务器就关闭了。

我怎样才能防止 X 服务器关闭并从我的更新程序脚本中搭载会话?

请记住我需要在调用更新程序脚本之前采取的措施nohup,否则更新将在原始 JVM 的子进程中运行,并且当应用程序停止以释放锁时会随之消失。

答案1

据我了解,当 JVM 进程结束时,X 服务器就关闭了。

当您的 .xinitrc 脚本进程结束时,startx/xinit 工具将关闭 X 服务器。

如何防止 X 服务器关闭

从 .xinitrc 启动其他程序 – 传统上,人们会将窗口管理器作为最后一个进程启动,因为窗口管理器预计会持续整个 X 会话的生命周期。

(即使全屏应用程序也可能偶尔显示弹出窗口,因此 WM 仍然很方便。我可能会为此使用 Openbox。)

或者,启动任何你想要的、永不退出的程序,例如sleep infinitysleep 9999d。重点是你的 .xinitrc 脚本永远不应该结束。

我正在运行一个无头图形应用程序(信息亭)

如果它是一个信息亭并且附有显示器来显示图形应用程序,那么它就不是无头的。

相关内容