

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

# 截止日期云中的 Job 附件
<a name="storage-job-attachments"></a>

使用*作业附件*，您可以在工作站和 De AWS adline Cloud 之间来回传输文件。使用任务附件，您无需为文件手动设置 Amazon S3 存储桶。相反，当您使用 Deadline Cloud 控制台创建队列时，您可以为任务附件选择存储桶。

首次向 Deadline Cloud 提交作业时，该作业的所有文件都将传输到 Deadline Cloud。对于后续提交，仅传输已更改的文件，从而节省时间和带宽。

处理完成后，您可以从任务详细信息页面下载结果，也可以使用 Deadline Cloud CLI `deadline job download-output` 命令下载结果。

您可以将相同的 S3 存储桶用于多个队列。为每个队列设置不同的根前缀以整理存储桶中的附件。

使用控制台创建队列时，您可以选择现有 AWS Identity and Access Management (IAM) 角色，也可以让控制台创建新角色。如果控制台创建了角色，则它会设置访问为队列指定的存储桶的权限。如果您选择现有角色，则必须向该角色授予访问 S3 存储桶的权限。

## 对任务附件 S3 存储桶进行加密
<a name="storage-job-attachments-encryption"></a>

默认情况下，您的 S3 存储桶中会对 Job 附件文件进行加密。这种加密有助于保护您的信息免遭未经授权的访问。您无需执行任何操作即可使用 Deadline Cloud 提供的密钥对文件进行加密。有关更多信息，请参阅《Amazon S3 用户指南中的 [Amazon S3 现在会自动加密所有新对象](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html)**。

您可以使用自己的客户托管 AWS Key Management Service 密钥对包含任务附件的 S3 存储桶进行加密。为此，您必须修改与存储桶关联的队列的 IAM 角色以允许访问 AWS KMS key。

**打开队列角色的 IAM 策略编辑器**

1. 登录 AWS 管理控制台 并打开 Deadlin [e Cloud 控制台](https://console.aws.amazon.com/deadlinecloud/home)。在主页的 “**入门**” 部分，选择 “**查看农场**”。

1. 从服务器场列表中，选择包含要修改的队列的场。

1. 从队列列表中选择要修改的队列。

1. 在**队列详细信息**部分，选择**服务角色**以打开该服务角色的 IAM 控制台。

接下来，完成以下步骤。

**更新角色策略，使其具有以下权限 AWS KMS**

1. 从**权限策略**列表中，为角色选择策略。

1. **在此策略中定义的权限**部分中，选择**编辑**。

1. 选择**添加新语句**。

1. 将以下策略复制并粘贴到编辑器中。将*`Region`*``*`accountID`*、和*`keyID`*``更改为您自己的值。

   ```
   {
      "Effect": "Allow",
      "Action": [
          "kms:Decrypt",
          "kms:DescribeKey",
          "kms:GenerateDataKey"
      ],
      "Resource": [
          "arn:aws:kms:us-east-1:111122223333:key/keyID"
      ]
   }
   ```

1. 选择**下一步**。

1. 查看对政策的更改，然后在满意时选择 “**保存更改**”。

## 替换任务附件存储桶
<a name="storage-job-attachments-replace-bucket"></a>

您可以将当前的任务附件存储桶替换为其他任务附件存储桶。您将在队列详情中的 “**Job 附件**” 选项卡下找到一个按钮。您可以使用它来更改任务附件存储桶，也可以替换同一个存储桶中的根文件夹来上传任务附件。

**访问作业附件设置**

1. 前往 “**队列详情**”，然后找到 “**Job 附件**” 选项卡。

1. 在 “作业附件” 选项卡中，有 2 个选项：

   1. 通过执行以下操作来更改任务附件存储桶：

      1. 选择一个新的 S3 存储桶。

      1. 更新队列的服务角色策略以授予对新存储桶的访问权限。

      或

   1. 通过执行以下操作更改现有存储桶中的根文件夹：

      1. 修改根文件夹的名称。

      1. 更新队列服务角色中的资源 ARN。

**更新服务角色**

1. 导航到您的服务器场 > 队列 > 队列服务角色。

1. 选择**在 JSON 中编辑**。

1. 找到资源 ARN（默认根文件夹为 **DeadlineCloud**）：

   ```
     "arn:aws:s3:::<your-job-attachments-bucket-name>/DeadlineCloud/*"
   ]
   ```

1. 使用新的存储桶或文件夹更新 ARN：

   ```
    "arn:aws:s3:::<your-job-attachments-NEW-bucket-name>/NEW-ROOT-FOLDER-NAME/*"
   ]
   ```

1. 在进行这些更改后验证权限，以确保访问权限正确。

## 管理 S3 存储桶中的任务附件
<a name="storage-job-attachments-s3-lifecycle"></a>

Deadline Cloud 将您的任务所需的任务附件存储在 S3 存储桶中。这些文件会随着时间的推移而累积，从而导致 Amazon S3 成本增加。为了降低成本，您可以将 S3 生命周期配置应用于 S3 存储桶。此配置可以自动删除存储桶中的文件。由于 S3 存储桶位于您的账户中，因此您可以随时选择修改或删除 S3 生命周期配置。有关更多信息，请参阅 [Amazon S3 *用户指南中的 S3* 生命周期配置示例](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html)。

要获得更精细的 S3 存储桶管理解决方案，您可以将您的设置 AWS 账户 为根据上次访问时间在 S3 存储桶中使对象过期。有关更多信息，请参阅 AWS 架构博客[上的基于上次访问日期使 Amazon S3 对象过期以降低成本](https://aws.amazon.com/blogs/architecture/expiring-amazon-s3-objects-based-on-last-accessed-date-to-decrease-costs/)。

# 截止日期云虚拟文件系统
<a name="storage-virtual"></a>

De AWS adline Cloud 中对作业附件的虚拟文件系统支持使工作人员上的客户端软件能够直接与 Amazon Simple Storage Service 通信。工作人员只能在需要时加载文件，而不是在处理之前下载所有文件。文件存储在本地。这种方法可以避免下载多次使用的资源。任务完成后，所有文件都将被删除。
+ 虚拟文件系统为特定的作业配置文件提供了显著的性能提升。通常，文件总量中较小的子集和较大的工作人员队伍显示出最大的好处。工作线程较少的少量文件处理时间大致相同。
+ 虚拟文件系统支持仅适用于服务管理队Linux列中的工作人员。
+ Deadline Cloud 虚拟文件系统支持以下操作，但不兼容 POSIX：
  + 文件`create`、`delete`、`open`、`close`、`read`、`write`、、`append`、`truncate`、`rename`、`move`、`copy`、`stat`、`fsync`、和 `falloc` 
  + 目录`create`、`delete`、`rename`、`move`、`copy`、和 `stat`
+ 当您的任务仅访问大型数据集的一部分，并且未针对所有工作负载进行优化时，虚拟文件系统旨在减少数据传输并提高性能。在运行生产作业之前，您应该测试您的工作负载。

## 启用 VFS 支持
<a name="enable-vfs"></a>

为每个作业启用了虚拟文件系统支持 (VFS)。在以下情况下，作业会回退到默认的作业附件框架：
+ 工作器实例配置文件不支持虚拟文件系统。
+ 问题导致无法启动虚拟文件系统进程。
+ 无法装载虚拟文件系统。

**使用提交者启用虚拟文件系统支持**

1. 提交作业时，选择 “**设置**” 按钮以打开 De **AWS adline Cloud 工作站配置面板**。

1. 从 **Job 附件文件系统选项下拉列表中，选择** **V** IRTUAL。  
![\[Deadline Cloud 提交者显示了作业附件文件系统的选项。\]](http://docs.aws.amazon.com/zh_cn/deadline-cloud/latest/userguide/images/submitter-vfs.png)

1. 要保存更改，请选择 “**确定”**。

**要启用虚拟文件系统支持，请使用 AWS CLI**
+ 提交保存的作业时，请使用以下命令：

  ```
  deadline bundle submit-job --job-attachments-file-system VIRTUAL
  ```

要验证是否为特定任务成功启动了虚拟文件系统，请在 Amazon Logs 中查看您的 CloudWatch 日志。查找以下消息：

```
Using mount_point mount_point
Launching vfs with command command
Launched vfs as pid PID number
```

如果日志包含以下消息，则虚拟文件系统支持已禁用：

```
Virtual File System not found, falling back to COPIED for JobAttachmentsFileSystem.
```

## 虚拟文件系统支持疑难解答
<a name="troubleshoot-vfs"></a>

您可以使用 Deadline Cloud 监视器查看虚拟文件系统的日志。有关说明，请参阅[在截止日期云中查看会话和工作人员日志](view-logs.md)。

虚拟文件系统日志还会发送到与工作器代理输出共享的队列关联的 CloudWatch 日志组。

# 自动下载
<a name="auto-downloads"></a>

Deadline CLI 提供了一个命令，用于下载队列中自上次运行相同命令以来已完成的所有任务的输出。您可以将其配置为 cron 作业或计划任务以重复运行。此配置可设置连续自动下载输出。

在设置自动下载之前，请按照[作业附件的存储配置文件](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/storage-profile.html)中的步骤配置要上传和下载的资产数据的所有路径。如果作业使用的输出路径不在其存储配置文件中，则自动下载会跳过下载该输出并打印警告消息以汇总未下载的文件。同样，如果提交作业时没有存储配置文件，则自动下载会跳过该作业并打印警告消息。默认情况下，Deadline Cloud 提交者会显示存储配置文件之外的路径的警告消息，以帮助确保配置正确。

## 配置 AWS 凭证
<a name="credentials"></a>

自动下载使用 Deadline CLI 持续下载作业输出。要对这些下载进行身份验证，您需要长期 IAM 证书。Deadline Cloud monitor 凭据过期，因此您无法将其用于此目的。

 请按照以下步骤设置长期证书。

**重要**  
请注意以下警告：  
**请勿**使用您账户的根凭证访问 AWS 资源。这些凭证可提供不受限的账户访问且难以撤销。
**不得**在应用程序文件中按字面输入访问密钥或凭证信息。如果您这样做，则在将项目上传到公共存储库或在其他情况下，会有意外暴露凭证的风险。
**不得**在项目区域中放入包含凭证的文件。
保护您的访问密钥。请不要向未经授权方提供访问密钥，即便是为了帮助[找到您的账户标识符](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html)也不行。通过这样做，您可以授予他人永久访问您的帐户的权限。
请注意，存储在共享凭据文件中的所有 AWS 凭据都以纯文本形式存储。
有关更多详细信息，请参阅[《*AWS 一般参考*》中的管理 AWS 访问密钥的最佳实践。](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#securing_access-keys)

**创建 IAM 用户**

1. 使用 [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/) 打开 IAM 控制台。

1. 在导航窗格中，选择**用户**，然后选择**创建用户**。

1. 为用户命名**deadline-output-downloader**。清除 “为**用户提供访问权限” 复选框 AWS 管理控制台，**然后选择 “**下一步**”。

1. 选择**直接附加策略**。

1. 选择 C **re** ate policy 以创建具有最低所需权限的自定义策略。

1. 在 JSON 编辑器中，指定以下权限：

------
#### [ JSON ]

****  

   ```
   {
                      "Version":"2012-10-17",		 	 	 
                      "Statement": [
                          {
                              "Sid": "DeadlineCloudOutputDownload",
                              "Effect": "Allow",
                              "Action": [
                                  "deadline:AssumeQueueRoleForUser",
                                  "deadline:ListQueueEnvironments",
                                  "deadline:ListSessions",
                                  "deadline:ListSessionActions",
                                  "deadline:SearchJobs",
                                  "deadline:GetJob",
                                  "deadline:GetQueue",
                                  "deadline:GetStorageProfileForQueue"
                              ],
                              "Resource": "*"
                          }
                        ]
                     }
   ```

------

1. 命名策略**DeadlineCloudOutputDownloadPolicy**并选择**创建策略**。

1. 返回用户创建页面，刷新策略列表，选择**DeadlineCloudOutputDownloadPolicy**您刚刚创建的策略，然后选择**下一步**。

1. 查看用户详细信息，然后选择**创建用户**。

**创建访问密钥**

1. 在用户详细信息页面上，选择**安全凭证**选项卡。在**访问密钥**部分，选择**创建访问密钥**。

1. 指明您要将密钥用于 “其他”，然后选择 “**下一步**”，然后选择 “**创建访问密钥**”。

1. 在 “**检索访问密钥**” 页面上，选择 “**显示” 以显示**用户的私有访问密钥的值。您可以复制凭证或下载 .csv 文件。

**存储用户访问密钥**
+ 将用户访问密钥存储在系统的 AWS 凭据文件中：
  + 开启Linux，文件位于 `~/.aws/credentials`
  + 开启Windows，文件位于 `%USERPROFILE\.aws\credentials`

  替换以下密钥：

  ```
  [deadline-downloader]
  aws_access_key_id=ACCESS_KEY_ID
  aws_secret_access_key=SECRET_ACCESS_KEY
  region=YOUR_AWS_REGION
  ```

**重要**  
当您不再需要此 IAM 用户时，我们建议您将其删除，以符合[AWS 安全最佳实践](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#lock-away-credentials)。我们建议您要求人类用户在访问[AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html)时使用临时证书 AWS。

## 先决条件
<a name="auto-downloads-prerequisites"></a>

在创建用于自动下载的 cron 任务或计划任务之前，请完成以下步骤。

1. 如果你还没有，请安装 [Python](https://www.python.org/)。

1. 通过运行以下命令安装 Deadline CLI

   ```
   python -m pip install deadline
   ```

1. 使用以下命令确认 Deadline CLI 的版本是否为 0.52.1 或更高版本。

   ```
   $ deadline --version
   deadline, version 0.52.1
   ```

## 测试输出下载命令
<a name="test-output-command"></a>

**验证该命令在您的环境中是否有效**

1. 获取通往截止日期的路径

------
#### [ Linux and macOS ]

   ```
   $ which deadline
   ```

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

   ```
   C:\> where deadline
   ```

------
#### [ PowerShell ]

   ```
   PS C:\> Get-Command deadline
   ```

------

1. 运行 sync-output 命令进行引导。

   ```
     /path/to/deadline queue sync-output \
     --profile deadline-downloader \
     --farm-id YOUR_FARM_ID \
     --queue-id YOUR_QUEUE_ID \
     --storage-profile-id YOUR_PROFILE_ID \
     --checkpoint-dir /path/to/checkpoint/directory \
   ```

1. 只有当您的下载计算机与提交计算机相同时，才需要执行此步骤。将`--storage-profile-id YOUR_PROFILE_ID \`上面的内容替换为`--ignore-storage-profiles`。

1. 提交测试作业。

   1. 从 GitHub下载.zip 文件。

      1. 打开[deadline-cloud-samples GitHub 存储库](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline)。

      1. 选择 “**代码**”，然后从下拉菜单中选择 “**下载 ZIP**”。

      1. 将下载的档案解压缩到本地目录。

   1. 运行

      ```
       cd /path/to/unzipped/deadline-cloud-samples-mainline/job_bundles/job_attachments_devguide_output
      ```

   1. 运行

      ```
      deadline bundle submit .
      ```

      1. 如果您没有默认的 deadline 配置设置，则可能需要在命令行中提供以下内容。

        ```
        --farm-id YOUR-FARM-ID --queue-id YOUR-QUEUE-ID
        ```

   1. 等待任务完成后再进入下一步。

1. 再次运行同步输出命令。

   ```
    /path/to/deadline queue sync-output \
     --profile deadline-downloader \
     --farm-id YOUR_FARM_ID \
     --queue-id YOUR_QUEUE_ID \
     --storage-profile-id YOUR_PROFILE_ID \
     --checkpoint-dir /path/to/checkpoint/directory
   ```

1. 请验证以下内容：
   + 您的测试作业的输出显示在目标目录中。
   + 将在您指定的检查点目录中创建检查点文件。

## 设置预定下载
<a name="set-up-scheduled-downloads"></a>

选择操作系统的选项卡，了解如何配置每 5 分钟自动下载一次。

------
#### [ Linux ]

1. **验证 CLI 安装截止日期**

   获取截止日期可执行文件的确切路径：

   ```
   $ which deadline
   ```

   请注意此路径（例如`/opt/homebrew/bin/deadline`），以便在 plist 文件中使用。

1. **创建检查点目录**

   创建存储检查点文件的目录。确保您的用户拥有适当的权限才能运行该命令。

   ```
   $ mkdir -p /path/to/checkpoint/directory
   ```

1. **创建日志目录**

   为 cron 作业日志创建目录：

   ```
   $ mkdir -p /path/to/logs
   ```

   考虑使用 https://www.redhat.com/en/ blog/setting-logrotate 在日志文件上设置日志轮换

1. **检查当前的 Crontab**

   查看您当前的 crontab 以查看现有作业：

   ```
   $ crontab -l
   ```

1. **编辑 Crontab**

   打开你的 crontab 文件进行编辑：

   ```
   $ crontab -e
   ```

   如果这是您第一次，系统可能会提示您选择编辑器（nano、vim 等）。

1. **添加 Cron Job 条目**

   添加以下行以每 5 分钟运行一次作业（将路径替换为步骤 1 和 2 中的实际值）：

   ```
   */5 * * * * /path/to/deadline queue sync-output --profile deadline-downloader --farm-id YOUR_FARM_ID --queue-id YOUR_QUEUE_ID --storage-profile-id YOUR_PROFILE_ID --checkpoint-dir /path/to/checkpoint/directory >> /path/to/logs/deadline_sync.log 2>&1
   ```

1. **验证 Cron Job 的安装情况**

   保存并退出编辑器后，验证是否添加了 cron 作业：

   ```
   $ crontab -l
   ```

   您应该会看到您的新工作已列出。

1. **检查 Cron 服务状态**

   确保 cron 服务正在运行：

   ```
   # For systemd systems (most modern Linux distributions)
   $ sudo systemctl status cron
   # or
   $ sudo systemctl status crond
   
   # For older systems
   $ sudo service cron status
   ```

   如果未运行，请启动它：

   ```
   $ sudo systemctl start cron
   $ sudo systemctl enable cron  # Enable auto-start on boot
   ```

------
#### [ macOS ]

1. **验证 CLI 安装截止日期**

   获取截止日期可执行文件的确切路径：

   ```
   $ which deadline
   ```

   请注意此路径（例如`/opt/homebrew/bin/deadline`），以便在 plist 文件中使用。

1. **创建检查点目录和日志目录**

   创建存储检查点文件的目录：

   ```
   $ mkdir -p /path/to/checkpoint/directory
   $ mkdir -p /path/to/logs
   ```

   考虑使用 https://formulae.brew 在日志文件上设置日志轮换。 sh/formula/logrotate

1. **创建一个 Plist文件**

   在创建包含以下内容`~/Library/LaunchAgents/com.user.deadlinesync.plist`的配置文件（`/path/to/deadline`替换为步骤 1 中的实际路径）：

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
   <plist version="1.0">
   <dict>
       <key>Label</key>
       <string>com.user.deadlinesync</string>
       <key>ProgramArguments</key>
       <array>
           <string>/path/to/deadline</string>
           <string>queue</string>
           <string>sync-output</string>
           <string>--profile</string>
           <string>deadline-downloader</string>
           <string>--farm-id</string>
           <string>YOUR_FARM_ID</string>
           <string>--queue-id</string>
           <string>YOUR_QUEUE_ID</string>
           <string>--storage-profile-id</string>
           <string>YOUR STORAGE PROFILE ID</string>
           <string>--checkpoint-dir</string>
           <string>/path/to/checkpoint/dir</string>
       </array>
       <key>RunAtLoad</key>
       <true/>
       <key>UserName</key>
       <string>YOUR_USER_NAME</string>
       <key>StandardOutPath</key>
       <string>/path/to/logs/deadline_sync.log</string>
       <key>StartInterval</key>
       <integer>300</integer>
   </dict>
   </plist>
   ```

   `--ignore-storage-profiles`如果您的下载计算机与提交计算机相同，请将`--storage-profile-id YOUR_PROFILE_ID`上面的内容替换为。

1. **验证列表文件**

   验证 plist 文件的 XML 语法：

   ```
   $ plutil -lint ~/Library/LaunchAgents/com.user.deadlinesync.plist
   ```

   如果文件有效，则应返回 “OK”。

1. **检查现有的启动代理或启动守护程序**

   检查启动代理是否已加载：

   ```
   $ launchctl list | grep deadlinesync
   OR
   $ sudo launchctl list | grep deadlinesync
   ```

   如果存在，请先将其卸载：

   ```
   $ launchctl bootout gui/$(id -u)/com.user.deadlinesync
   OR
   $ sudo launchctl bootout system/com.user.deadlinesync
   ```

1. **创建并引导**

   要在用户登录时运行此任务，请以身份运行**LaunchAgent**。要在每次计算机运行时都没有用户登录的情况下运行此任务，请将其作为运行**LaunchDaemon**。

   1. 要以**LaunchAgent以下方式运行：**

      1. 使用在下创建的配置 `~/Library/LaunchAgents/com.user.deadlinesync.plist`

      1. 然后使用 bootstrap 命令加载配置：

         ```
         $ launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.user.deadlinesync.plist
         ```

   1. 要以**LaunchDaemon**以下方式运行：

      1. 通过运行以下命令移动 Pilst 文件并更改权限：

         ```
         $ sudo mv ~/Library/LaunchAgents/com.user.deadlinesync.plist /Library/LaunchDaemons/ 
         $ sudo chown root:wheel /Library/LaunchDaemons/com.user.deadlinesync.plist 
         $ sudo chmod 644 /Library/LaunchDaemons/com.user.deadlinesync.plist
         ```

      1. 使用新式 bootstrap 命令加载启动代理：

         ```
         $ sudo launchctl bootstrap system /Library/LaunchDaemons/com.user.deadlinesync.plist
         ```

1. **验证状态**

   如果你引导了，请 LaunchAgent 运行以下命令来确认它已加载：

   ```
   $ launchctl list | grep deadlinesync
   ```

   如果你启动了 a LaunchDaemon，请运行以下命令确认它已加载：

   ```
   $ sudo launchctl list | grep deadlinesync
   ```

   输出应如下所示

   ```
   SOME_PID_NUMBER 0 com.user.deadlinesync
   ```

   有关详细状态信息，请执行以下操作：

   ```
   $ launchctl print gui/$(id -u)/com.user.deadlinesync
   ```

   这显示了当前状态、程序参数、环境变量、运行间隔和执行历史记录。

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

**注意**  
使用这些说明创建的计划任务仅在用户登录时起作用。  
要在系统启动时进行设置，无需用户登录，请参阅官方[Windows文档](https://learn.microsoft.com/en-us/windows/win32/taskschd/using-the-task-scheduler)。

要执行以下所有步骤，请使用命令提示符-以管理员身份运行：

1. **验证 CLI 安装截止日期**

   查找截止日期可执行文件：

   ```
   C:\> where deadline
   ```

   记下任务中使用的完整路径（例如`C:\Program Files\Amazon\DeadlineCloud\deadline.exe`）。

1. **创建检查点目录**

   创建存储检查点文件的目录：

   ```
   C:\> mkdir "path\to\checkpoint\directory"
   ```

1. **创建日志目录**

   为任务日志创建目录：

   ```
   C:\> mkdir "path\to\logs"
   ```

1. **创建 Batch 文件包装器**

   创建包含以下内容的批处理文件：

   ```
   C:\> notepad C:\path\to\deadline_sync.bat
   ```

   ```
   YOUR_PATH_TO_DEADLINE.EXE queue sync-output --profile deadline-downloader --farm-id YOUR_FARM_ID --queue-id YOUR_QUEUE_ID --storage-profile-id YOUR_PROFILE_ID --checkpoint-dir path\to\checkpoint\checkpoints > path\to\logs\deadline.log 2>&1
   ```

1. **Test Batch 文件**

   手动测试批处理文件：

   ```
   C:\> .\path\to\deadline_sync.bat
   ```

   检查日志文件是否已创建：

   ```
   C:\> notepad path\to\logs\deadline_sync.log
   ```

1. **查看任务计划程序服务**

   确保任务计划程序服务正在运行：

   ```
   C:\> sc query "Schedule"
   ```

   如果该服务不存在，请尝试其他名称：

   ```
   C:\> sc query "TaskScheduler"
   C:\> sc query "Task Scheduler"
   ```

   如果未运行，请启动它：

   ```
   C:\> sc start "Schedule"
   ```

1. **创建计划任务**

   创建每隔 5 分钟运行一次的任务。

   ```
   C:\> schtasks /create /tn "DeadlineOutputSync" /tr "C:\path\to\deadline_sync.bat" /sc minute /mo 5
   ```

   命令细分：
   + `/tn`-任务名称
   + `/tr`-要运行的任务（您的批处理文件）
   + `/sc minute /mo 5`-时间表：每 5 分钟一班

1. **验证任务创建**

   检查任务是否已成功创建：

   ```
   schtasks /query /tn "DeadlineOutputSync" /v /fo LIST
   ```

   寻找：
   + 待@@ **运行的任务**：应显示您的批处理文件路径
   + **下次运行时间**：应显示 5 分钟以内的时间

1. **测试任务执行**

   手动运行任务进行测试：

   ```
   schtasks /run /tn "DeadlineOutputSync"
   ```

   检查任务状态：

   ```
   schtasks /query /tn "DeadlineOutputSync"
   ```

------

**验证设置**

要验证自动下载设置是否成功，请完成以下步骤。

1. 提交新的测试作业。

1. 等待一个调度程序间隔完成，在本例中为 5 分钟。

1. 验证是否自动下载了新输出。

如果输出未下载，请查看 “故障排除” 部分以获取过程日志。

## 自动下载疑难解答
<a name="auto-downloads-troubleshooting"></a>

如果您在自动下载时遇到问题，请检查以下内容：

### 存储配置文件问题
<a name="storage-profile-issues"></a>
+ 日志文件`[Errno 13] Permission denied`中出现类似`[Errno 2] No such file or directory`或的错误可能与存储配置文件缺失或配置错误有关。
+ [有关在下载计算机与提交计算机不同时如何设置存储配置文件的信息，请参阅存储配置文件。](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/storage-profile-job-attachments.html)
+ 要在同一台计算机上下载，请尝试使用该`--ignore-storage-profiles`标志。

### 目录权限
<a name="directory-permissions"></a>
+ 确保调度程序服务用户具有：
  + 对检查点目录的读/写权限
  + 对输出目标目录的写入权限
+ 对于Linux和macOS，使用`ls -la`来检查权限。
+ 对于Windows，请查看 “属性” 文件夹中的 “安全设置”。

### 检查日程安排日志
<a name="checking-scheduler-logs"></a>

------
#### [ Linux ]

1. 检查 cron 服务是否正在运行：

   ```
   # For systemd systems
   $ sudo systemctl status cron
   # or
   $ sudo systemctl status crond
   
   # Check if your user has cron job correctly configured
   $ crontab -l
   ```

1. 查看 cron 执行日志：

   ```
   # Check system logs for cron activity (most common locations)
   $ sudo tail -f /var/log/syslog | grep CRON
   $ sudo tail -f /var/log/cron.log | grep deadline
   
   # View recent cron logs
   $ sudo journalctl -u cron -f
   $ sudo journalctl -u crond -f  # On some systems
   ```

1. 查看您的特定 cron 作业日志：

   ```
   # View the log file specified in your cron job
   $ tail -100f /path/to/logs/deadline_sync.log
   ```

1. 在系统日志中搜索 cron 作业执行情况：

   ```
   # Look for your specific cron job executions
   $ sudo grep "deadline.*incremental-output-download" /var/log/syslog
   
   # Check for cron job starts and completions
   $ sudo grep "$(whoami).*CMD.*deadline" /var/log/syslog
   ```

1. 检查检查点文件更新：

   ```
   # List checkpoint files with timestamps
   $ ls -la /path/to/checkpoint/directory/
   
   # Check when checkpoint was last modified
   $ stat /path/to/checkpoint/directory/queue-*_download_checkpoint.json
   ```

1. 检查日志文件：

   ```
   $ ls -la /path/to/log/deadline_sync.log
   ```

------
#### [ macOS ]

查看启动代理执行日志：

1. 检查启动代理是否正在运行：

   ```
   $ sudo launchctl list | grep deadlinesync
   ```

   输出显示：`PID Status Label`（PID 将在当前未运行`-`时显示，这对于间隔作业来说是正常的）

1. 查看详细的启动代理状态：

   ```
   $ sudo launchctl print system/com.user.deadlinesync
   ```

   这显示了执行历史记录、上次退出代码、运行次数和当前状态。

1. 查看启动代理执行日志：

   ```
   # View recent logs (last hour)
   log show --predicate 'subsystem contains "com.user.deadlinesync"' --last 1h
   
   # View logs from a specific time period
   log show --predicate 'subsystem contains "com.user.deadlinesync"' --start '2024-08-27 09:00:00'
   ```

1. 强制运行启动代理以立即进行测试：

   ```
   $ sudo launchctl kickstart gui/$(id -u)/com.user.deadlinesync
   ```

   无论日程安排如何，这都会立即触发作业，这对于测试很有用。

1. 检查检查点文件更新：

   ```
   # List checkpoint files with timestamps
   $ ls -la /path/to/checkpoint/directory/
   ```

1. 检查日志文件：

   ```
   $ ls -la /path/to/log/deadline_sync.log
   ```

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

1. 检查任务计划程序服务是否正在运行：

   ```
   C:\> sc query "Schedule"
   ```

   如果该服务不存在，请尝试其他名称：

   ```
   C:\> sc query "TaskScheduler"
   C:\> sc query "Task Scheduler"
   ```

1. 查看您的计划任务：

   ```
   C:> schtasks /query /tn "DeadlineOutputSync"
   ```

1. 检查任务的日志文件：

   ```
   # View the log file created by your batch script
   C:> notepad C:\path\to\logs\deadline_sync.log
   ```

1. 检查检查点文件更新：

   ```
   # List checkpoint files with timestamps
   C:> dir "C:\path\to\checkpoint\directory" /od
   ```

------