我在 Linux 服务器上运行 Wine 以便运行一些旧的 Windows 应用程序。
我现在需要编写一个脚本来确保它们正在运行。
是否可以创建到服务器的 ssh 连接并启动应用程序?
例如,如果我在桌面上,打开一个终端窗口并运行
wine "Z:\home\user\Desktop\application"
Run Code Online (Sandbox Code Playgroud)
应用程序打开。但是如果我通过 SSH 连接并运行
wine "Z:\home\user\Desktop\application"
Run Code Online (Sandbox Code Playgroud)
我得到:
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
err:systray:initialize_systray Could not create tray window
Application tried to create a window, but no driver could be loaded.
Make sure that your X server is running and that $DISPLAY is set correctly.
Run Code Online (Sandbox Code Playgroud)
我假设我需要告诉它从哪里启动应用程序而不是仅仅启动它,但看不到如何执行此操作?
附加信息:
我目前正在使用 Windows PC,并使用 Putty 连接到 Linux/Wine 服务器。(我也有一个 RDP 连接,所以我可以看到桌面)。
从长远来看,我将在另一台 Linux 服务器 (MgmtSrv) 上运行该脚本,该服务器将与 Linux/Wine 服务器建立 ssh 连接以对其进行管理。MgmtSrv 没有安装 Wine,也没有设置 X-Display。
正如您猜测的那样,您需要告诉 Wine 在哪里显示其应用程序。由于您的 Wine 服务器有一个 X 显示,它可能是:0:
DISPLAY=:0 wine ...
Run Code Online (Sandbox Code Playgroud)
应该可以解决问题(假设您的 X 身份验证 cookie 没问题;如果不是,您将收到Invalid MIT-MAGIC-COOKIE错误消息)。