将xterm重定向到无头机器的背景

我有一个启动 xterm 并转储 uart 日志的应用程序。我能够看到它启动并在 GUI 中转储日志。但是,使用远程会话,我希望 xterm 输出作为后台进程在某处运行,以便我可以在单个终端内来回切换。

使用图形用户界面

使用远程终端 (SSH)

$ xterm
xterm: Xt error: Can't open display: :0

我试图做类似的事情,但没有成功 -

alias xterm="/bin/bash -c"

我也不想X forwarding在我的本地机器上有并启动一个窗口。

回答

如果您只需要日志,则很可能不需要 X 服务器或xterm.

您可以简单地运行目标命令本身。从您的屏幕截图看来,该命令可能是telnet 127.0.0.1 <port_number>. 您可以从应用程序启动的脚本或ps -ef运行时的脚本中找到它。如果是 UART,那么您也可以使用minicomsocat直接连接到串行端口,而无需任何额外的程序。这样,您甚至不需要telnet.

您可以将此命令与其中之一结合使用screentmux以便它在后台运行,并且您可以从任何终端或控制台切换到它。只要运行screen不带参数,然后运行虚拟屏幕上的命令。与 分离CTRL-a d,您的命令将继续在后台运行,随时可以使用 重新连接到它screen -r

而且,screen还可以直接连接串口,花一个的钱买两个。

问题xterm是它不会在除了图形缓冲区之外的任何地方写入日志,即使在那里它也只会作为不适合任何处理的闪烁像素。如果你坚持走这条路,你有几个选择:

  • 更改应用程序运行的脚本(根据您的情况可能无法实现)
  • 替换/usr/bin/xterm为仅运行的虚拟脚本bash而不是xterm,并将输出重定向到文件(丑陋,但您可以通过更改PATH并将其放在其他地方来避免破坏其他应用程序)。在您的脚本中,您可以使用bash的重定向功能,例如>或管道输出到tee
  • 在后台启动 VNC 服务器,并DISPLAY在运行应用程序时将环境变量设置为虚拟屏幕的数量。在这种情况下,来自应用程序的任何窗口都将在 VNC 虚拟屏幕上打开,您可以随意连接到它。
  • 使用xvfb作为一个虚拟的X服务器与xterm记录等结合起来

以上是将xterm重定向到无头机器的背景的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>