在 Linux 上创建虚拟会话故障排除 - NICE DCV
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Linux 上创建虚拟会话故障排除

如果连接到虚拟会话会导致No session available要么The sessionId session is not available错误,这可能是由于虚拟会话创建失败并已终止。

你可以检查会话是否存在dcv list-sessions命令。请参阅查看 NICE DCV 会话有关检查正在运行的会话的更多信息。如果该会话不在列表中,那么它可能已经失败。

调查 Linux 上的虚拟会话创建失败

虚拟会话是创造在 Linux 上使用命令:

$ dcv create-session session

只有在创建会话失败时,此命令才会返回错误。但是,可能发生会话最初成功创建的情况,但会在用户连接之前终止。你可能会注意到这一点是因为当你检查现有会话时,例如使用命令dcv list-sessions或者dcv describe-session session,你可能没有收到列出的会话。

在大多数情况下,发生这种情况的原因是桌面会话已创建但随后立即失败,例如,由 init 脚本启动的应用程序之一崩溃或失败,或者缺少所需的工具之一。

如果会话创建失败,请检查以下内容:

  • 检查/var/log/dcv/sessionlauncher.log包含与创建新会话进程的 dcv 组件相关的日志的文件。

  • 检查/var/log/dcv/dcv-session.user.session.log包含与 dcv init 脚本相关的日志的文件。

  • 检查$HOME/.xsession-errors文件位于与会话所有者对应的主目录中。此文件包含由系统 X 会话初始化脚本生成的日志,通常包含桌面会话管理器或脚本调用的其他应用程序生成的日志。

  • 查看系统日志以获取有关故障系统和组件的更多信息。作为一开始,请检查的输出dmesg(例如在流程失败的情况下)和journalctl -xe.

  • 使用故障安全会话进行测试验证问题不取决于正在使用的会话管理器。

如果失败只发生在特定用户身上,您也可以尝试以下操作:

  • 检查用户配置,特别是删除或重命名用户配置时会发生什么情况。

    根据桌面环境和版本,配置目录可能是.gnome要么.kde要么.config在用户目录中。

  • 检查影响用户的特定用户配置PATH或者环境。很多时候,特定用户的会话启动失败是由于以下框架造成的:anaconda覆盖一些可能导致的标准本机命令dbus会话初始化中的连接将失败。

  • 检查权限问题。在本地设置了错误的权限~/.dbus要么~/.Xauthority(例如,它们可能是由root而不是用户)可能会导致桌面会话立即终止。

在 Linux 上创建故障安全虚拟会话

验证会话创建失败是否与桌面环境的启动有关的常见策略是创建最小的会话。我们将本次会议称为 “故障安全” 会话。如果创建故障安全会话正常工作,那么我们可以推断出你的正常会话因为默认的系统桌面环境无法启动而失败。相反,如果故障安全会话也失败,那么问题更可能与 NICE DCV 服务器的设置有关。

故障安全会话通常由只包含简单窗口管理器和终端的桌面会话组成。这允许用户检查是否存在与使用中的特定会话环境(通常是 gnome 或 KDE)相关的会话创建问题。

为了创建故障安全会话,你需要为用户创建一个 init 脚本,其中包含以下内容:

#!/bin/sh metacity & xterm

这将启动metacity窗口管理器然后启动xterm终端,只要xterm进程已终止会话也将终止。

如果系统上可用,您可以使用自己选择的其他会话管理器或终端。

注意

你必须确保脚本不会立即终止。为此,你需要在脚本末尾启动一个非立即终止的程序。随着最后一个命令终止 (xterm在示例中),初始会话也会终止。同时,当你在 Windows 管理器之后启动另一个工具时,你需要确保它在后台运行(通过添加&在示例中),以确保调用下一个命令。

然后,您需要确保 init 脚本可执行:

$ chmod a+x init.sh

要从用户 shell 使用指定 init 脚本创建会话,请运行此命令,其中init.sh之前创建的脚本是:

$ dcv create-session dummy --init init.sh

要为另一个用户作为超级用户创建会话,可以改为运行以下命令:

$ sudo dcv create-session test --user user --owner user --init init.sh

最后,你可以启动测试应用程序,例如dcvgltest(只有在你有nice-dcv-gltest已安装软件包)或glxgears验证 OpenGL 或任何其他应用程序是否正常工作。