

• Amazon Systems Manager CloudWatch 控制面板在 2026 年 4 月 30 日之后将不再可用。客户可以像现在一样继续使用 Amazon CloudWatch 控制台来查看、创建和管理其 Amazon CloudWatch 控制面板。有关更多信息，请参阅 [Amazon CloudWatch 控制面板文档](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

# 允许可配置的 Shell 配置文件
<a name="session-preferences-shell-config"></a>

默认情况下，适用于 Linux 的 EC2 实例上的会话使用 Bourne Shell（sh）启动。但是，您可能更喜欢使用 Bash 等其他 Shell。通过允许可配置的 Shell 配置文件，您可以自定义会话中的首选项，例如 Shell 首选项、环境变量、工作目录以及在启动会话时运行多个命令。

**重要**  
Systems Manager 不会检查 Shell 配置文件中的命令或脚本，以查看它们在运行之前会对实例进行哪些更改。要限制用户修改在其 Shell 配置文件中输入的命令或脚本，建议执行以下操作：  
为您的 Amazon Identity and Access Management (IAM) 用户和角色创建自定义的会话类型文档。然后，修改这些用户和角色的 IAM policy，使 `StartSession` API 操作只能使用您为他们创建的会话类型文档。有关信息，请参阅 [创建 Session Manager 首选项文档（命令行）](getting-started-create-preferences-cli.md) 和 [Session Manager 的快速入门最终用户策略](getting-started-restrict-access-quickstart.md#restrict-access-quickstart-end-user)。
修改 IAM 用户和角色的 IAM policy，以拒绝访问您创建的会话类型文档资源的 `UpdateDocument` API 操作。这样，您的用户和角色便可以使用您为其会话首选项创建的文档，而不允许他们修改任何设置。

**要启用可配置的 Shell 配置文件，请执行以下步骤：**

1. 访问 [https://console.aws.amazon.com/systems-manager/](https://console.amazonaws.cn/systems-manager/)，打开 Amazon Systems Manager 控制台。

1. 在导航窗格中，请选择 **Session Manager**。

1. 选择**首选项**选项卡，然后选择**编辑**。

1. 在适用操作系统的字段中指定要在会话启动时运行的环境变量、Shell 首选项或命令。

1. 选择**保存**。

以下是一些可以添加到 Shell 配置文件的示例命令。

在 Linux 实例上更改为 Bash Shell，并更改为 /usr 目录。

```
exec /bin/bash
cd /usr
```

在会话开始时输出时间戳和欢迎消息。

------
#### [ Linux & macOS ]

```
timestamp=$(date '+%Y-%m-%dT%H:%M:%SZ')
user=$(whoami)
echo $timestamp && echo "Welcome $user"'!'
echo "You have logged in to a production instance. Note that all session activity is being logged."
```

------
#### [  Windows  ]

```
$timestamp = (Get-Date).ToString("yyyy-MM-ddTH:mm:ssZ")
$splitName = (whoami).Split("\")
$user = $splitName[1]
Write-Host $timestamp
Write-Host "Welcome $user!"
Write-Host "You have logged in to a production instance. Note that all session activity is being logged."
```

------

在会话开始时查看动态系统活动。

------
#### [ Linux & macOS ]

```
top
```

------
#### [  Windows  ]

```
while ($true) { Get-Process | Sort-Object -Descending CPU | Select-Object -First 30; `
Start-Sleep -Seconds 2; cls
Write-Host "Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName"; 
Write-Host "-------  ------    -----      ----- -----   ------     -- -----------"}
```

------