0

我正在使用 Azure 批处理 python API。当我创建新作业时,我看到退出代码 128(附图片)。我怎么知道这是什么原因?

退出代码错误

我正在使用此代码创建一个新工作:

def wrap_commands_in_shell(commands):
    return "/bin/bash -c 'set -e; set -o pipefail; {}; wait'".format(';'.join(commands))

job_tasks = ['cd /mnt/batch/tasks/shared/ && git clone https://github.com/cryptobiu/OSPSI.git',
             'cd /mnt/batch/tasks/shared/OSPSI && git checkout cloud',
             'cd /mnt/batch/tasks/shared/OSPSI && cmake CMake',
             'cd /mnt/batch/tasks/shared/OSPSI && mkdir -p assets'
             ]

job_creation_information = batch.models.JobAddParameter(job_id, batch.models.PoolInformation(pool_id=pool_id),
                                                        job_preparation_task=batch.models.JobPreparationTask(
                                                            command_line=wrap_commands_in_shell(
                                                                job_tasks),
                                                            run_elevated=True,
                                                            wait_for_success=True
                                                        )
                                                        )
4

1 回答 1

3

要进行诊断,您可以使用 Azure Batch Explorer 或通过代码使用 SDK 查看 Azure 门户中失败的作业准备任务stderr.txtstdout.txt如果您查看哪个节点运行了作业准备任务,请导航到该节点,然后导航到作业目录。在作业目录下,您应该会看到一个jobpreparation目录。在该目录中将有stderr.txtand stdout.txt

关于退出代码,有一些潜在问题可能导致此问题:

  1. 您是否在启动任务中安装了gitcmake任何其他依赖项?
  2. 当我尝试导航到:https ://github.com/cryptobiu/OSPSI 时收到 404 。这个回购存在吗?如果它是私有存储库,您是否提供了正确的凭据?

关于您的job_tasks阵列的一些注意事项:

  • 您不应该对路径进行硬编码/mnt/batch/tasks/shared。Linux 发行版之间的“共享”目录路径可能不同。您应该改用环境变量$AZ_BATCH_NODE_SHARED_DIR您可以在此处查看 Azure Batch 预填充环境变量的完整列表。
  • 您不需要 cd 进入每个命令的目录,您只需执行一次。你可以重写job_tasks为: ['cd $AZ_BATCH_NODE_SHARED_DIR', 'TODO: INSERT YOUR COMMANDS TO SETUP AUTH WITH GITHUB FOR PRIVATE REPO', 'git clone https://github.com/cryptobiu/OSPSI.git', 'cd OSPSI', 'cmake CMake', 'mkdir -p assets']
于 2016-12-27T13:47:48.260 回答