

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

# 管理 Amazon DCV 会话
<a name="managing-sessions"></a>

设置 Amazon DCV 服务器并安装所有应用程序后，您的客户端将通过安全会话访问它们。为客户端管理这些会话将授予它们访问权限并为每个会话设置参数。

您必须先在 Amazon DCV 服务器上创建 Amazon DCV 会话，然后您的客户端才能连接到会话。只有在存在活动会话时，客户端才能连接到 Amazon DCV 服务器。

每个 Amazon DCV 会话具有以下属性：
+ **会话 ID** - 用于标识 Amazon DCV 服务器上的特定会话。
+ **所有者** - 创建会话的 Amazon DCV 用户。默认情况下，仅所有者可以连接到会话。

Amazon DCV 客户端需要此信息来连接到会话。

**Topics**
+ [了解 Amazon DCV 会话](managing-sessions-intro.md)
+ [使用命令行工具管理会话](managing-sessions-cli.md)
+ [启动 Amazon DCV 会话](managing-sessions-start.md)
+ [停止 Amazon DCV 会话](managing-sessions-lifecycle-stop.md)
+ [查看 Amazon DCV 会话](managing-sessions-lifecycle-view.md)
+ [管理活动的 Amazon DCV 会话](managing-running-session.md)
+ [设置会话时区](managing-session-time-zone.md)
+ [在 Linux 上管理屏幕消隐](managing-screen-blanking.md)
+ [在 Amazon DCV 会话中获取屏幕截图](managing-sessions-lifecycle-screenshot.md)

# 了解 Amazon DCV 会话
<a name="managing-sessions-intro"></a>

Amazon DCV 提供两种类型的会话：控制台会话和虚拟会话。下表简要说明了两种类型的会话之间的差异。


| 会话类型 | 支持 | 多个会话 | 所需的权限 | 直接捕获屏幕 | GPU 加速的 OpenGL 支持 | 
| --- | --- | --- | --- | --- | --- | 
| 控制台 | Linux、macOS 和 Windows 亚马逊 DCV 服务器 | 否，在每个服务器上仅允许一个控制台会话 | 仅管理员用户可以启动和关闭会话 | 是 | 是，无需额外的软件 | 
| 虚拟 | 仅 Linux Amazon DCV 服务器 | 是，在单个服务器上允许多个虚拟会话 | 任何用户都可以启动和关闭会话 | 否，为每个虚拟会话运行一个专用的 X 服务器（Xdcv）。屏幕是从 X 服务器中捕获的。 | 是，但需要使用 DCV-GL 软件包 | 

**注意**  
您无法同时在同一 Amazon DCV 服务器上运行控制台会话和虚拟会话。

## 控制台会话
<a name="managing-sessions-intro-console"></a>

Windows、Linux 和 macOS 亚马逊 DCV 服务器支持控制台会话。如果你使用的是 Windows 或 macOS Amazon DCV 服务器，则只能使用控制台会话。

每次只能在 Amazon DCV 服务器上托管一个控制台会话。控制台会话由管理员在 Windows Amazon DCV 服务器上创建和管理，root 用户在 Linux 和 macOS Amazon DCV 服务器上创建和管理。

对于控制台会话，Amazon DCV 直接捕获桌面屏幕的内容。如果服务器配置了 GPU，Amazon DCV 控制台会话可以直接访问该 GPU。

## 虚拟会话
<a name="managing-sessions-intro-virtual"></a>

仅 Linux Amazon DCV 服务器上支持虚拟会话。

您可以同时在同一 Amazon DCV 服务器上托管多个虚拟会话。虚拟会话是由 Amazon DCV 用户创建和管理的。Amazon DCV 用户只能管理他们创建的会话。根用户可以管理当前在 Amazon DCV 服务器上运行的所有虚拟会话。

对于虚拟会话，Amazon DCV 启动 X 服务器实例 `Xdcv`，并在 X 服务器中运行桌面环境。Amazon DCV 为每个虚拟会话启动一个新的专用 X 服务器实例。每个虚拟会话均使用其 X 服务器实例提供的显示内容。

**注意**  
虽然 Amazon DCV 确保每个虚拟会话具有独立的 `Xdcv` 显示器，但很多其他系统资源（包括用户主文件夹中的文件、D-Bus 服务和设备）是按用户分配的，因此，可以在同一用户的多个虚拟会话之间共享和访问这些资源。  
 您不应同时在同一 Amazon DCV 服务器上为同一用户运行多个虚拟会话，除非您已设置操作系统以减轻对共享资源的可能担忧。

如果`dcv-gl`软件包已安装并获得许可，Amazon DCV 虚拟会话将共享对服务器的 GPUs访问权限。要在多个虚拟会话之间共享基于硬件的 OpenGL，必须通过配置 `dcv-gl.conf` 文件将虚拟 X 服务器实例连接到 GPU。

# 使用命令行工具管理会话
<a name="managing-sessions-cli"></a>

Amazon DCV 服务器包含一个命令行工具，可用于启动、停止和查看 Amazon DCV 会话。



## 在 Windows Amazon DCV 服务器上使用命令行工具
<a name="cli-win"></a>

要在 Windows Amazon DCV 服务器上使用命令行工具，请从 Amazon DCV 安装目录中运行命令或将 Amazon DCV 目录添加到 PATH 环境变量中。如果将 Amazon DCV 目录添加到 PATH 环境变量中，您可以从任何目录中使用命令。

**从 Amazon DCV 安装目录中使用命令行工具**  
导航到 `dcv.exe` 文件所在的文件夹（默认为 `C:\Program Files\NICE\DCV\Server\bin\`），然后打开命令提示符窗口。

或者，您可以在从其他目录运行命令时指定完整路径。

```
"C:\> Program Files\NICE\DCV\Server\bin\dcv.exe" list-sessions
```

**将 Amazon DCV 目录添加到 PATH 环境变量**

1. 在文件资源管理器中，右键单击**此 PC**，然后选择**属性**。

1. 选择**高级系统设置**。

1. 在**高级**选项卡上，选择**环境变量**。

1. 在**系统变量**部分中，选择 **Path** 变量，然后选择**编辑**。

1. 选择**新建**并指定 Amazon DCV 安装目录中的 `bin` 文件夹的完整路径（例如 `C:\Program Files\NICE\DCV\Server\bin\`）。

1. 选择**确定**并关闭“环境变量”窗口。

## 在 Linux Amazon DCV 服务器上使用命令行工具
<a name="cli-lin"></a>

在 Linux Amazon DCV 服务器上，在 `$PATH` 环境变量中自动配置命令行工具。您可以从任何文件夹中使用该工具。打开终端窗口并输入要运行的命令。

## 在 macOS 亚马逊 DCV 服务器上使用命令行
<a name="cli-macos"></a>

在 macOS 的 Amazon DCV 服务器上，命令行工具是在环境变量中自动配置的。`$PATH`您可以从任何文件夹中使用该工具。打开终端窗口并输入要运行的命令。

## 命令行工具的使用
<a name="command-line-usage"></a>

下表显示了可用的命令行选项。可在调用 `dcv` 时使用 `--help` 来检索此列表。有关如何使用每条命令的更多信息，请在想要了解相应使用信息的命令后面传入 `--help`。例如：`dcv create-session --help`。


| 命令 | 说明 | 
| --- | --- | 
|  `create-session`  |  创建新的 DCV 会话  | 
|  `close-session`  |  关闭活动的 DCV 会话  | 
|  `describe-session`  |  描述 DCV 会话  | 
|  `list-sessions`  |  列出活动的 DCV 会话  | 
|  `list-connections`  |  列出 DCV 会话的客户端连接  | 
|  `close-connection`  |  关闭活动的客户端连接  | 
|  `get-screenshot`  |  获取 DCV 控制台的屏幕截图  | 
|  `set-display-layout`  |  设置活动 DCV 会话的显示布局  | 
|  `set-name`  |  为 DCV 会话设置名称  | 
|  `set-permissions`  |  设置活动 DCV 会话的权限  | 
|  `set-storage-root`  |  设置活动 DCV 会话的存储根  | 
|  `reload-licenses`  |  强制重新加载所有正在运行的会话的许可证  | 
|  `get-config`  |  获取服务器配置  | 
|  `list-endpoints`  |  列出 DCV 端点  | 
|  `set-config`  |  设置服务器配置  | 
|  `version`  |  显示 DCV 版本  | 
|  `help`  |  显示帮助  | 

# 启动 Amazon DCV 会话
<a name="managing-sessions-start"></a>

在您使用默认设置[安装 Windows Amazon DCV 服务器](setting-up-installing-wininstall.md)时，将在安装服务器后自动创建并激活一个[控制台会话](managing-sessions-intro.md#managing-sessions-intro-console)。默认控制台会话由 `Administrator` 拥有，其默认会话 ID 为 `console`。您可以使用该会话，也可以[关闭该会话](managing-sessions-lifecycle-stop.md)并创建一个新会话。

如果您在安装 Amazon DCV 服务器时选择不自动创建控制台会话，您必须手动创建一个会话。在安装 Amazon DCV 服务器后，您可以随时启用或禁用[自动创建控制台会话](#managing-sessions-start-auto)的功能。

**注意**  
Linux 和 macOS Amazon DCV 服务器在安装后不会获得默认控制台会话。

假设您在本地或其他基于云的服务器上使用浮动许可证，并且超过了许可证支持的最大并发会话数，您可能会出现 `no licenses` 错误。如果您收到此错误，请停止一个未使用的会话以释放许可证并重试。

Amazon DCV 服务器必须正在运行才能启动会话。有关更多信息，请参阅 [启动 Amazon DCV 服务器](manage-start.md)。

**Topics**
+ [手动启动控制台会话和虚拟会话](#managing-sessions-start-manual)
+ [启用自动控制台会话](#managing-sessions-start-auto)

## 手动启动控制台会话和虚拟会话
<a name="managing-sessions-start-manual"></a>

您可以随时启动 Amazon DCV 会话。一次只能运行一个控制台会话。如果使用 Linux Amazon DCV 服务器，您可以同时运行多个虚拟会话。

最好在创建会话之前运行 `dcv list-sessions`，尤其是在使用 Windows Amazon DCV 服务器时。

要在 Windows、Linux 或 macOS Amazon DCV 服务器上创建控制台或虚拟会话，请使用命令。`dcv create-session`

**Topics**
+ [语法](#managing-sessions-start-manual-syntax)
+ [选项](#managing-sessions-start-manual-options)
+ [示例](#managing-sessions-start-manual-examples)

### 语法
<a name="managing-sessions-start-manual-syntax"></a>

启动会话的命令的最简单语法是：

```
dcv create-session session_ID
```

包含所有选项的完整语法是：

```
dcv create-session \
    --type console|virtual \
    --name session_name \
    --user username \
    --owner owner_name \
    --permissions-file /path_to/permissions_file \
    --storage-root /path_to/storage_directory \
    --gl on|off \
    --max-concurrent-clients number_of_clients \
    --init /path_to/init_script \
    session_ID
```

**注意**  
`\` 符号表示将命令拆分为多行的语法。

您也可以使用 `dcv create-session --help` 显示语法的快速参考。

### 选项
<a name="managing-sessions-start-manual-options"></a>

以下选项可以与 `dcv create-session` 命令一起使用：

**`--type`**  
仅 Linux Amazon DCV 服务器上支持此选项。它指定要创建的会话的类型，可以是 `console` 或 `virtual`。  
类型：字符串  
允许的值：`console` \$1 `virtual`  
必需：否

**`--name`**  
指定会话的名称。会话名称可以是最多 256 个字符的任意字符串。如果字符串超过 256 个字符，命令将失败。会话名称在运行的会话中不需要是唯一的。  
您可以随时使用 `dcv set-name` 命令更改会话的名称。有关更多信息，请参阅 [管理会话名称](managing-session-name.md)。  
类型：字符串  
是否必需：是

**`--user`**  
仅在 Linux Amazon DCV 会话上支持将此选项与虚拟会话一起使用。此值是要用于创建会话的用户。只有根用户可以模拟其他用户。  
类型：字符串  
必需：否

**`--owner`**  
指定会话所有者。如果省略，则默认为当前已登录的用户。  
类型：字符串  
必需：否

**`--permissions-file`**  
指定自定义权限文件的路径。如果省略，则默认为服务器默认值。  
类型：字符串  
必需：否

**`--storage-root`**  
指定用于会话存储的文件夹的路径。  
您可以使用 `%home%` 指定当前已登录的用户的主目录。例如，以下内容将会话存储的目录设置为 `c:\Users\username\storage\`（对于 Windows 服务器）或 `$HOME/storage/`（对于 Linux 服务器）。  

```
--storage-root %home%/storage/
```
如果指定的子目录不存在，则会禁用会话存储。
类型：字符串  
必需：否

**`--gl`**  
仅在 Linux Amazon DCV 会话上支持将此选项与虚拟会话一起使用。它覆盖默认的 `dcv-gl` 状态，并且可以是 `on` 或 `off`。  
类型：字符串  
允许的值：`on` \$1 `off`  
必需：否

**`--max-concurrent-clients`**  
指定允许连接到会话的 Amazon DCV 客户端的最大数量。如果省略，则默认为无限连接。  
类型：整数  
必需：否

**`--init`**  
仅在 Linux Amazon DCV 服务器上支持将此选项与虚拟会话一起使用。它指定自定义 `init` 脚本的路径。该脚本可用于启动特定桌面环境以及在会话开始时自动启动特定应用程序。该脚本必须是可执行的。如果省略，则默认为启动默认桌面环境的脚本。  
类型：字符串  
必需：否

**`session ID`**  
在命令末尾提供会话的 ID。  
类型：字符串  
是否必需：是

### 示例
<a name="managing-sessions-start-manual-examples"></a>

**示例 1 – 控制台会话**  
以下命令创建一个由 `dcv-user` 拥有的控制台会话，它具有唯一会话 ID `my-session` 和会话名称 `my graphics session`。它还指定一个名为 `perm-file.txt` 的权限文件。
+ Windows Amazon DCV 服务器

  ```
  C:\> dcv create-session^
      --owner dcv-user^
      --name "my graphics session"^
      --permissions-file perm-file.txt^
      my-session
  ```
+ Linux Amazon DCV 服务器

  ```
  $ sudo dcv create-session \
      --type=console \
      --owner dcv-user \
      --name "my graphics session" \
      --permissions-file perm-file.txt \
      my-session
  ```

**示例 2 - 虚拟会话（仅限 Linux Amazon DCV 服务器）**  
以下命令使用根用户模拟预期会话所有者 `dcv-user` 以创建一个虚拟会话。即使会话是由根用户创建的，该会话仍由 `dcv-user` 拥有：

```
$ sudo dcv create-session \
    --owner dcv-user \
    --user dcv-user \
    my-session
```

**示例 3 - 虚拟会话（仅限 Linux Amazon DCV 服务器）**  
以下命令创建一个虚拟会话，该会话由创建它的用户拥有：

```
$ dcv create-session my-session
```

## 启用自动控制台会话
<a name="managing-sessions-start-auto"></a>

启用自动控制台会话可以确保，每次 Amazon DCV 服务器启动时自动创建控制台会话。自动控制台会话由 `owner` 配置参数指定的 Amazon DCV 用户拥有。它的会话 ID 始终为 `console`。

影响自动控制台会话的其他参数是 `max-concurrent-clients`、`permissions-file` 和 `storage-root`。有关这些参数的更多信息，请参阅 [`session-management/automatic-console-session` 参数](config-param-ref.md#session_management_automatic_console_session)。

**注意**  
Amazon DCV 不支持自动虚拟会话。

------
#### [ Windows Amazon DCV server ]

**在 Windows Amazon DCV 服务器上启用自动控制台会话**

1. 打开 Windows 注册表编辑器。

1. 导航到 **HKEY\$1USERS\$1 S-1-5-18\$1 Software\$1\$1 com\$1 n icesoftwareGSettings\$1** dcv\$1 会话管理密钥。

1. 创建 `create-session` 参数：

   1. 在导航窗格中，打开 **session-management** 项的上下文（右键单击）菜单，然后选择**新建** > **DWORD（32 位）**值。

   1. 对于**名称**，输入 `create-session` 并按 **Enter**。

   1. 打开 **create-session** 参数。对于**值数据**，输入 `1` 并选择**确定**。

1. 导航到 **HKEY\$1USERS\$1 S-1-5-18\$1 Software\$1\$1 com\$1 n icesoftwareGSettings\$1 dcv\$1 ses** sion-Management/ 密钥。automatic-console-session

1. 创建 `owner` 参数：

   1. 在导航窗格中，打开**automatic-console-session**密钥的上下文（右键单击）菜单，然后选择 “**新建**，**字符串值**”。

   1. 对于**名称**，输入 `owner` 并按 **Enter**。

   1. 打开 **owner** 参数。对于**值数据**，输入会话拥有者的名称并选择**确定**。

1. 选择**确定**，并关闭 Windows 注册表编辑器。

1. [停止](manage-stop.md)并[重新启动](manage-start.md) Amazon DCV 服务器。

------
#### [ Linux Amazon DCV server ]

**在 Linux Amazon DCV 服务器上启用自动控制台会话**

1. 导航到 `/etc/dcv/`，并使用您常用的文本编辑器打开 `dcv.conf`。

1. 使用以下格式将 `create-session` 和 `owner` 参数添加到 `[session-management/automatic-console-session]` 段：

   ```
   [session-management]
   create-session = true
   
   [session-management/automatic-console-session]
   owner="session-owner"
   ```

1. 保存并关闭 文件。

1. [停止](manage-stop.md)并[重新启动](manage-start.md) Amazon DCV 服务器。

------
#### [ macOS Amazon DCV server ]

**在 macOS Amazon DCV 服务器上启用自动控制台会话**

1. 导航到 `/etc/dcv/`，并使用您常用的文本编辑器打开 `dcv.conf`。

1. 使用以下格式将 `create-session` 和 `owner` 参数添加到 `[session-management/automatic-console-session]` 段：

   ```
   [session-management]
   create-session = true
   
   [session-management/automatic-console-session]
   owner="session-owner"
   ```

1. 保存并关闭 文件。

1. [停止](manage-stop.md)并[重新启动](manage-start.md) Amazon DCV 服务器。

------

# 停止 Amazon DCV 会话
<a name="managing-sessions-lifecycle-stop"></a>

控制台会话只能由管理员在 Windows Amazon DCV 服务器上停止，在 Linux 和 macOS Amazon DCV 服务器上只能由根用户停止。Linux Amazon DCV 服务器上的虚拟会话只能由根用户或创建它的 Amazon DCV 用户停止。

**注意**  
停止会话将关闭会话中正在运行的所有应用程序。

要在 Windows、Linux 或 macOS Amazon DCV 服务器上停止控制台或虚拟会话，请使用`dcv close-session`命令并指定唯一的会话 ID。

**Topics**
+ [语法](#managing-sessions-lifecycle-stop-syntax)
+ [示例](#example)

## 语法
<a name="managing-sessions-lifecycle-stop-syntax"></a>

```
dcv close-session session-id
```

## 示例
<a name="example"></a>

例如，以下命令停止具有唯一 ID `my-session` 的会话。

```
dcv close-session my-session
```

# 查看 Amazon DCV 会话
<a name="managing-sessions-lifecycle-view"></a>

Windows Amazon DCV 服务器上的管理员或 Linux Amazon DCV 服务器上的根用户可以查看服务器上运行的所有活动会话。Amazon DCV 用户只能查看他们创建的会话。



**Topics**
+ [查看所有活动会话](#list-all)
+ [查看特定的活动会话](#view-specific)

## 查看所有活动会话
<a name="list-all"></a>

要列出 Windows 或 Linux Amazon DCV 服务器上的活动控制台会话或虚拟会话，请使用 `dcv list-sessions` 命令。

**Topics**
+ [语法](#list-all-syntax)
+ [Output](#output)

### 语法
<a name="list-all-syntax"></a>

```
dcv list-sessions
```

### Output
<a name="output"></a>

该命令使用以下格式返回活动会话列表。

```
Session: session-id (owner:session-owner type:virtual|console name:'my session')
```

## 查看特定的活动会话
<a name="view-specific"></a>

要查看有关会话的信息，请使用 `dcv describe-session` 命令并指定唯一的会话 ID。

**Topics**
+ [语法](#view-specific-syntax)
+ [Output](#output)

### 语法
<a name="view-specific-syntax"></a>

```
$ dcv describe-session session_id
```

### Output
<a name="output"></a>

在以下示例输出中，`display-layout` 元素指示会话的显示布局设置为使用两个 800x600 屏幕。其中的第二个屏幕从第一个屏幕偏移 x=800（向右）。

```
Session: test
  owner: session-id
  name: session-name
  x display: :1
  x authority: /run/user/1009/dcv/test.xauth
  display layout: 800x600+0+0,800x600+800+0
```

您还可以包含 `--json`（或 `-j`）选项，以强制命令以 JSON 格式返回输出。JSON 输出提供了有关会话的其他详细信息。

```
$ dcv describe-session session-id --json
```

以下是示例 JSON 输出。

```
{
  "id" : "session-id",
  "owner" : "dcvuser",
  "name" : "session-name",
  "num-of-connections" : 0,
  "creation-time" : "2020-03-02T16:08:50Z",
  "last-disconnection-time" : "",
  "licenses" : [
    {
      "product" : "dcv",
      "status" : "licensed",
      "check-timestamp" : "2020-03-02T16:08:50Z",
      "expiration-date" : "2020-03-29T00:00:00Z"
    },
    {
      "product" : "dcv-gl",
      "status" : "licensed",
      "check-timestamp" : "2020-03-02T16:08:50Z",
      "expiration-date" : "2020-03-29T00:00:00Z"
    }
  ],
  "storage-root" : "",
  "type" : "virtual",
  "x11-display" : ":2",
  "x11-authority" : "/run/user/1009/dcv/vsession.xauth",
  "display-layout" : [
    {
      "width" : 800,
      "height" : 600,
      "x" : 0,
      "y" : 0
    },
    {
      "width" : 800,
      "height" : 600,
      "x" : 800,
      "y" : 0
    }
  ]
}
```

# 管理活动的 Amazon DCV 会话
<a name="managing-running-session"></a>

当客户端登录并开始使用 DCV 会话后，该会话即被视为处于活动状态。当会话处于活动状态时，您仍然可以执行某些管理任务。本节介绍当客户端仍在使用会话时，您管理这些会话的参数需要哪些信息。

**Topics**
+ [管理会话存储](managing-session-storage.md)
+ [管理会话授权](managing-session-perms.md)
+ [管理会话显示布局](managing-session-display.md)
+ [管理会话名称](managing-session-name.md)
+ [查找和停止空闲会话](stop-idle-sessions.md)

# 管理 Amazon DCV 会话存储
<a name="managing-session-storage"></a>

会话存储是 Amazon DCV 服务器上的一个目录，客户端可以在连接到 Amazon DCV 会话时访问该目录。

如果在 Amazon DCV 服务器上启用了会话存储，您可以使用 `dcv set-storage-root` 命令指定服务器上用于会话存储的目录。有关在 Amazon DCV 服务器上启用会话存储的更多信息，请参阅[启用会话存储](manage-storage.md)。

要设置会话存储路径，请使用 `dcv set-storage-root` 命令并指定会话 ID 和要使用的目录的路径。

**Topics**
+ [语法](#managing-session-storage-syntax)
+ [选项](#managing-session-storage-options)
+ [示例](#session-storage-example)

## 语法
<a name="managing-session-storage-syntax"></a>

```
dcv set-storage-root --session session_id /path_to/directory
```

对于目录路径，您可以使用 `%home%` 指定当前登录用户的主目录。例如，在 Windows 服务器上，`%home%/storage/` 路径解析为 `c:\Users\username\storage\`。在 Linux 服务器上，该路径解析为 `$HOME/storage/`。

**注意**  
在 macOS 上，该`storage-root`值必须是绝对路径。

## 选项
<a name="managing-session-storage-options"></a>

可以将以下选项与 `dcv set-storage-root` 命令一起使用：

**`--session`**  
要指定存储目录的会话 ID。  
类型：字符串  
是否必需：是

## 示例
<a name="session-storage-example"></a>

**Windows Amazon DCV 服务器示例**  
以下示例将会话 ID 为 `my-session` 的会话的存储路径设置为 `c:\session-storage`。

```
C:\> dcv set-storage-root --session my-session c:\session-storage
```

**Linux Amazon DCV 服务器示例**  
以下示例设置为当前用户的主目录中名为 `session-storage` 的目录的存储路径（对于会话 ID 为 `my-session` 的会话）。

```
$ dcv set-storage-root --session my-session %home%/session-storage/
```

# 管理 Amazon DCV 会话授权
<a name="managing-session-perms"></a>

授权用于为 Amazon DCV 客户端授予或拒绝特定 Amazon DCV 特征的权限。通常，授权是在启动 Amazon DCV 会话时配置的。不过，可以编辑运行的会话的权限。有关 Amazon DCV 授权的更多信息，请参阅[配置 Amazon DCV 授权](security-authorization.md)。

要修改运行的会话的权限，请使用 `dcv set-permissions` 命令。

**Topics**
+ [语法](#managing-session-perms-syntax)
+ [选项](#managing-session-perms-options)
+ [示例](#session-perms-example)

## 语法
<a name="managing-session-perms-syntax"></a>

```
dcv set-permissions --session session-id --none | --reset-builtin | --file /path_to/permissions_file
```

您必须指定 `--none`、`--reset-builtin` 或 `--file`。

## 选项
<a name="managing-session-perms-options"></a>

以下选项可以与 `dcv set-permissions` 命令一起使用。

**--session**  
指定要设置权限的会话的 ID。

**--reset-builtin**  
将会话的权限重置为默认会话权限。默认权限仅向会话拥有者授予对所有功能的完全访问权限。

**--none**  
撤消对会话的所有权限。

**--file**  
指定自定义权限文件的路径。如果指定的文件为空，则撤消所有权限。有关创建自定义权限文件的更多信息，请参阅[了解权限文件](security-authorization-file-create.md)。

## 示例
<a name="session-perms-example"></a>

**示例 1 - 撤销所有权限**  
以下示例撤消 ID 为 `my-session` 的会话的所有客户端权限。

```
C:\> dcv set-permissions --session my-session --none
```

**示例 2 - 指定自定义权限**  
以下示例为具有 ID `my-session` 的会话指定名为 `perm-file.txt` 的自定义权限文件。此文件位于 `c:\dcv\` 目录中。

```
C:\> dcv set-permissions --session my-session --file c:\dcv\perm-file.txt
```

**示例 3 - 重置权限**  
以下示例将 ID 为 `my-session` 的会话的权限重置为默认值。

```
C:\> dcv set-permissions --session my-session --reset-builtin
```

# 管理 Amazon DCV 会话显示布局
<a name="managing-session-display"></a>

您可以为运行的 Amazon DCV 会话设置显示布局。显示布局指定客户端连接到会话时使用的默认配置。不过，客户端可以使用 Amazon DCV 客户端设置或本机操作系统显示设置手动覆盖布局。

如果主机服务器的硬件和软件配置不支持指定的分辨率或屏幕数量，则 Amazon DCV 服务器不会应用指定的显示布局。

Amazon DCV 可以根据设置和服务器系统配置来配置分辨率。
+ 默认情况下，Web 客户端分辨率限制为 1920x1080（来自服务器 web-client-max-head分辨率设置）。
+ 默认情况下，本机客户端限制为 4096x2160（来自）。 max-head-resolution

请注意，可用的分辨率和显示器数量取决于服务器的配置，请务必按照[先决条件指南](https://docs.aws.amazon.com/dcv/latest/adminguide/setting-up-installing.html)正确设置系统环境和驱动程序以获得出色性能。

**注意**  
对于本机客户端，最多可以使用 4 台显示器。  
对于 Web 客户端，最多可以使用 2 台显示器。  
任何配置都不支持更高分辨率或超过最大数量的显示器。

**Topics**
+ [访问显示布局](#display-restrict)
+ [设置显示布局](#dislay-set)
+ [查看显示布局](#dislay-view)

## 访问显示布局
<a name="display-restrict"></a>

您可以配置 Amazon DCV 服务器，以防止客户端请求超出指定范围的显示布局。要限制显示布局更改，请配置以下 Amazon DCV 服务器参数。
+ [`enable-client-resize`](config-param-ref.md#paramref.display.enable-client-resize) - 要禁止客户端更改显示布局，请将该参数设置为 `false`。
+ [`min-head-resolution`](config-param-ref.md#paramref.display.min-head-resolution) 和 [`max-head-resolution`](config-param-ref.md#paramref.display.max-head-resolution) - 分别指定允许的最小和最大分辨率。
+ [`web-client-max-head-resolution`](config-param-ref.md#paramref.display.web-client-max-head-resolution) - 指定 Web 浏览器客户端允许的最大分辨率。`max-head-resolution` 限制基于 `web-client-max-head-resolution` 限制应用。默认情况下，Web 浏览器客户端的最大分辨率为 1920x1080。指定更高分辨率可能会导致性能问题，具体取决于 Web 浏览器和客户端计算机规范。
+ [`max-num-heads`](config-param-ref.md#paramref.display.max-num-heads) - 指定最大显示器数。
+ `max-layout-area` - 指定屏幕区域允许的最大像素数。将忽略总屏幕区域（以像素表示）超过指定值的请求。

有关这些参数的更多信息，请参阅“参数参考”中的[`display` 参数](config-param-ref.md#display)。

## 设置显示布局
<a name="dislay-set"></a>

**为运行的 Amazon DCV 会话配置显示布局**  
使用 `dcv set-display-layout` 命令并指定要设置显示布局和显示布局描述符的会话。

```
dcv set-display-layout --session session-id display-layout-descriptor
```

显示布局描述符指定显示数以及每个显示的分辨率和位置偏移。必须按以下格式指定描述：

```
widthxheight+|-x-position-offset+|-y-position-offset
```

如果指定多个屏幕，请用逗号将屏幕描述符分隔开来。屏幕位置偏移指定屏幕左上角相对于屏幕 1 的位置。如果您没有指定屏幕的位置偏移，则默认为 x=0 和 y=0。

**重要**  
如果要指定多个屏幕，请确保正确设置每个屏幕的位置偏移，以避免屏幕重叠。

例如，以下显示布局描述符指定两个屏幕：
+ 屏幕 1：1920x1080 分辨率，偏移为 x=0，y=0
+ 屏幕 2：800x600 分辨率，偏移为 x=1920，y=0，以便它显示在屏幕 1 的右侧。

![\[带两个屏幕的屏幕布局。\]](http://docs.aws.amazon.com/zh_cn/dcv/latest/adminguide/images/eg2.png)


```
1920x1080+0+0,800x600+1920+0
```

以下显示布局描述符指定三个屏幕。
+ 屏幕 1：1920x1080 分辨率，偏移为 x=0，y=0
+ 屏幕 2：1920x1080 分辨率，偏移为 x=1920，y=0，以便它显示在屏幕 1 的右侧。
+ 屏幕 3：1024x768 分辨率，偏移为 x=-1024，y=0，以便它显示在屏幕 1 的左侧。

![\[带三个屏幕的屏幕布局。\]](http://docs.aws.amazon.com/zh_cn/dcv/latest/adminguide/images/eg1.png)


```
1920x1080+0+0,1920x1080+1920+0,1024x768-1024+0
```

## 查看显示布局
<a name="dislay-view"></a>

**查看会话的显示布局**  
使用 `dcv describe-session` 命令并查看输出中的 `display layout` 元素。有关更多信息，请参阅 [查看 Amazon DCV 会话](managing-sessions-lifecycle-view.md)。

# 管理会话名称
<a name="managing-session-name"></a>

您可以随时更改运行的会话的名称。您可以使用会话的具体名称，以根据会话名称快速找到会话。会话名称在运行的会话中不需要是唯一的。

要更改运行的会话的名称，请使用 `dcv set-name` 命令。

**Topics**
+ [语法](#managing-session-name-syntax)
+ [选项](#managing-session-name-options)
+ [示例](#example)

## 语法
<a name="managing-session-name-syntax"></a>

```
$ dcv set-name --session session_id --none |--name "session-name"
```

您必须指定 `--name` 或 `--none`。

## 选项
<a name="managing-session-name-options"></a>

以下选项可以与 `dset-name` 命令一起使用。

**`--session`**  
要设置名称的会话的 ID。  
类型：字符串  
是否必需：是

**`--name`**  
要为会话分配的名称。只有在您要为会话分配名称时，才需要指定该选项。如果要删除名称，请省略该参数。会话名称长度最多为 256 个字符。它可以由字母、数字和特殊字符组成。如果指定的字符串超过 256 个字符，命令将失败。  
类型：字符串  
必需：否

**`--none`**  
指定该参数以从会话中删除现有的名称。如果您不希望删除会话名称，请省略该选项。  
必需：否

## 示例
<a name="example"></a>

**示例 1 - 更改会话的名称**  
以下示例将具有 ID `my-session` 的会话的名称设置为 `my graphics session`。

```
$ dcv set-name --session my-session --name "my graphics sessions"
```

**示例 2 - 删除会话的名称**  
以下示例删除具有 ID `my-session` 的会话的名称。

```
$ dcv set-name --session my-session --none
```

# 查找和停止空闲会话
<a name="stop-idle-sessions"></a>

您可以使用具有 `-j` 命令选项的 `dcv describe-sessions` CLI 命令确定空闲的 Amazon DCV 会话。指定 `-j` 选项会将此命令配置为返回 JSON 格式的输出，其中包含有关会话的其他详细信息。

例如，以下命令返回有关名为 `my-session` 的会话的信息。

```
$ dcv describe-session my-session -j
```

输出：

```
{
    "id" : "my-session",
    "owner" : "dcvuser",
    "x11-display" : ":1",
    "x11-authority" : "/run/user/1009/dcv/test3.xauth",
    "num-of-connections" : 1,
    "creation-time" : "2019-05-13T13:21:19.262883Z",
    "last-disconnection-time" : "2019-05-14T12:32:14.357567Z",
    "licensing-mode" : "DEMO",
    "licenses" : [
        {
            "product" : "dcv",
            "status" : "LICENSED",
            "check-timestamp" : "2019-05-14T12:35:40Z",
            "expiration-date" : "2019-05-29T00:00:00Z"
        },
        {
            "product" : "dcv-gl",
            "status" : "LICENSED",
            "check-timestamp" : "2019-05-14T12:35:40Z",
            "expiration-date" : "2019-05-29T00:00:00Z"
        }
    ]
}
```

在命令输出中，`num-of-connections` 参数表示活动客户端连接的数量。值 `0` 表示没有活动的客户端连接，并且会话当前处于空闲状态。您还可以使用 `last-disconnection-time` 参数确定会话上次具有活动客户端连接的时间。

您可以创建脚本或 cron 作业来使用此信息标识空闲会话。然后，您可以使用 [`dcv close-session`](managing-sessions-lifecycle-stop.md) 命令停止使用这些会话。

**注意**  
停止会话将关闭会话中正在运行的所有应用程序。

# 设置会话时区
<a name="managing-session-time-zone"></a>

DCV 允许会话所有者和用户设置其会话的时区，以反映 DCV 服务器位置或他们的当前位置。

 如果仅会话中的各个用户需要具有该功能，您需要先为所有用户设置集中参数，然后在 [添加权限](security-authorization-file-create-permission.md) 中创建自定义权限文件以单独调整各个用户的权限。

**注意**  
此功能在 Linux 虚拟会话实例集中不可用。

**注意**  
在 macOS 上，登录后会应用时区重定向。

**启用时区重定向**  
您可以为特定会话上的所有用户启用和禁用该功能。

1. 将 [`enable-timezone-redirection`](config-param-ref.md#paramref.redirection.enable-timezone-redirection) 参数修改为以下值之一：
   + `always-on`：始终启用时区重定向。

     将开启该功能，并且会话显示客户端的时区信息。用户无法关闭该功能。
   + `always-off`：始终禁用时区重定向。

     将关闭该功能，并且会话显示自己的时区信息。用户无法开启该功能。
   + `client-decides`：默认开启时区重定向。

     会话将启用该功能，显示客户端时区，并且用户可以选择禁用该功能以允许显示服务器时区。
**注意**  
该设置是标准默认设置。

1. 重新启动任何受影响的会话以使更改生效。

# 在 Linux 上管理屏幕消隐
<a name="managing-screen-blanking"></a>

对于 Linux 服务器上的控制台会话，当至少有一个远程用户连接到服务器时，DCV 会默认将本地屏幕消隐，并在最后一个远程用户断开连接后还原输出（也锁定屏幕）。

这可防止服务器附近的用户查看屏幕并使用连接到主机的输入设备与远程会话进行交互。远程处理控制台会话时，出于隐私或遵守当地法律的考虑，这可能是不可取的。通过禁用键盘和鼠标等物理连接设备，可以防止本地输入。输入设备一旦插入或被发现已启用，就会被禁用。类似地，当没有连接远程用户时，输入设备会重新启用，从而允许本地登录和交互。

**禁用屏幕消隐和输入屏蔽**  
可以使用以下步骤禁用屏幕消隐：

1. 导航到 `/etc/dcv/`，并使用您的首选文本编辑器打开 `dcv.conf` 文件。

1. 在 `[display/linux]` 部分中找到 `disable-local-console parameter`。要允许本地连接的显示器保持活动状态并显示正在进行的远程会话，并允许通过本地连接的设备进行交互，请设置 `disable-local-console=false`。默认值为 `true`（即：屏幕消隐和输入屏蔽处于活动状态）。如果在 `[display/linux]` 部分中没有 `disable-local-console` 参数，请按以下格式手动添加该参数：

   ```
    [display/linux]
    disable-local-console=false|true
   ```

1. 保存并关闭 文件。

1. [停止](manage-stop.md)并[重新启动](manage-start.md) Amazon DCV 服务器。

**防止选定的输入设备被禁用**  
可以将特定设备设置为保持启用状态。

 无论 `display-local-console` 设置的值如何，名称以 `DCV ` 开头的输入设备（请注意名称后面的空格）都不会被禁用。要重命名输入设备，请参阅本指南：[启用触控笔](enable-stylus.md)。

# 在 Amazon DCV 会话中获取屏幕截图
<a name="managing-sessions-lifecycle-screenshot"></a>

您可以使用 `dcv get-screenshot` 命令获取运行的会话的桌面屏幕截图。

## 语法
<a name="managing-sessions-lifecycle-screenshot-syntax"></a>

```
dcv get-screenshot --max-width pixels --max-height pixels --format JPEG|PNG --primary --json --output /path_to/destination session_name
```

## 选项
<a name="managing-sessions-lifecycle-screenshot-options"></a>

**`--max-width`**  
指定屏幕截图的最大宽度（以像素为单位）。如果未指定宽度或高度，屏幕截图将使用会话的显示分辨率。如果仅指定高度，则自动扩缩宽度以保持纵横比。  
类型：整数  
必需：否

**`--max-height`**  
指定屏幕截图的最大高度（以像素为单位）。如果未指定宽度或高度，屏幕截图将使用会话的显示分辨率。如果仅指定宽度，则自动扩缩高度以保持纵横比。  
类型：整数  
必需：否

**`--format`**  
屏幕截图的文件格式。目前，仅支持 `JPEG` 和 `PNG` 格式。如果为 `--format` 和 `--output` 选项指定的文件类型发生冲突，则优先使用为 `--format` 指定的值。例如，如果您指定 `--format JPEG` 和 `--output myfile.png`，则 Amazon DCV 创建 JPEG 图像文件。  
类型：字符串  
允许的值：`JPEG` \$1 `PNG`  
必需：否

**`--primary`**  
指示是否仅获取主显示器的屏幕截图。要仅获取主显示器的屏幕截图，请指定 `--primary`。要获取所有显示器的屏幕截图，请省略该选项。如果您选择获取所有显示器的屏幕截图，则所有显示器将合并为单个屏幕截图。  
必需：否

**`--json`, `-j`**  
指示是否使用 JSON 格式提供 Base64 编码的输出。要获取 JSON 输出，请指定 `--json`。否则，省略该选项。  
必需：否

**`--output`, `-o`**  
指定屏幕截图的目标路径、文件名和文件类型。例如，对于 Windows，指定 `c:\directory\filename.format`；对于 Linux，指定 `/directory/filename.format`。格式必须是 `.png` 或 `.jpeg`。如果为 `--format` 和 `--output` 选项指定的文件类型发生冲突，则优先使用为 `--format` 指定的值。例如，如果您指定 `--format JPEG` 和 `--output myfile.png`，则 Amazon DCV 创建 JPEG 图像文件。  
类型：字符串  
是否必需：否

## 示例
<a name="examples"></a>

**示例 1**  
以下示例命令获取名为 `my-session` 的会话的屏幕截图。屏幕截图使用服务器的分辨率。

```
dcv get-screenshot --output myscreenshot.png my-session
```

**示例 2**  
以下示例命令获取宽度为 `200` 像素且高度为 `100` 像素的屏幕截图。该示例从名为 `my-session` 的会话中获取屏幕截图。它将屏幕截图保存在当前目录中，文件名为 `myscreenshot.png`。

```
dcv get-screenshot --max-width 200 --max-height 100 --output myscreenshot.png my-session
```

**示例 3**  
以下示例命令获取名为 `my-session` 的会话的屏幕截图。屏幕截图仅是主显示器的屏幕截图。它将文件保存在当前目录中，并将屏幕截图命名为 `myscreenshot.png`。

```
dcv get-screenshot --primary --output myscreenshot.jpeg my-session
```

**示例 4**  
以下示例命令获取名为 `my-session` 的会话的屏幕截图。该命令使用 JSON 格式输出 Base64 编码的文件。

```
dcv get-screenshot --json --format png my-session
```