我正在尝试追踪 Java 应用程序的一些怪癖,该应用程序在通过 /etc/init.d 中的启动脚本启动时行为异常,但是当您打开 GUI 终端窗口并通过 /etc/init.d/ 运行它时运行良好我的应用程序启动。(奇怪之处涉及应用程序的一部分,它使用 X 进行了一些hacky handwaving。)由于应用程序在通过终端窗口启动时运行良好,因此在深入研究(诚然微妙而不是我的)源代码之前,我正在查看它是如何启动的代码。
这篇文章的答案给了我一个线索,即 Gnome 终端正在窗口管理器中运行,这以某种方式影响(以一种很好的方式)我通过 bash 脚本启动的应用程序的环境。我能够验证通过 tty 终端(ctrl-alt-f1 或通过 ssh)启动脚本的行为与启动时启动的行为相同。
我的主要问题是:当计算机启动时,我可以做些什么来启动这个应用程序,但它是否像在 X 下启动一样?到目前为止,我们已经使用了脚本路由,因为它还需要使用某些参数启动 Java VM。
后续问题(严格来说是为了增强我的理解):当脚本通过窗口管理器中运行的某些东西启动时,幕后发生了什么使脚本行为不同?谷歌并没有在这方面启发我。