【问题标题】:How to start a program with bash -c, redirect / disable GUI of that app如何使用 bash -c 启动程序,重定向/禁用该应用程序的 GUI
【发布时间】:2019-04-23 20:21:29
【问题描述】:

目前我正在启动一个 java 应用程序

bash -c java -jar app.jar -config config.json

应用程序打开一个窗口,显示一些输出并关闭。输出也可以在标准输出上使用,所以我不需要(想要)显示 GUI。

如何防止 bash 转发 X 输出?

跟进:

我在 go 应用程序中运行它,所以根据 el.pescado 的回答,我将它实现为:

func runcmd(cmd string, workdir string) ([]byte, error) {
  ex := exec.Command("bash", "-c", cmd)
  ex.Env = []string{"DISPLAY= "}
  ex.Dir = workdir
  return ex.Output()
}

【问题讨论】:

    标签: bash go


    【解决方案1】:

    您有多种选择:

    1. 首先,您应该检查该应用程序是否可以在没有 GUI 的情况下运行(通常称为“无头”模式)
    2. 您可以使用 unset DISPLAY 变量,这样您的应用就找不到您的 X11 服务器 - 但请记住,如果没有 X 服务器,应用可能无法运行

    例如。

    DISPLAY= bash -c java -jar app.jar -config config.json # note space after '='
    # or
    env -u DISPLAY bash -c java -jar app.jar -config config.json
    
    1. 您可以使用内存中的虚拟 X 服务器,例如 xfvb,并让您的应用程序在那里显示其窗口。

    例如。

    Xvfb :1 -screen 0 1600x1200x32
    DISPLAY=:1 bash -c java -jar app.jar -config config.json
    

    【讨论】:

    • @mgagnon #2 DISPLAY= bash -c java -jar app.jar -config config.json
    猜你喜欢
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多