Python Azure批处理-权限被拒绝的Linux节点
我正在使用Azure批处理在几个Linux节点上运行python脚本(在创建池之后)。每个节点都使用14.04.5-LTS版本的Ubuntu 在脚本中,我在每个节点上上载几个文件,然后在每个节点上运行几个任务。但是,当我尝试执行第一个任务时,会出现“权限被拒绝”错误。实际上,这项任务是解压一些文件(仅供参考,这些zip文件的上传进展顺利)。 这个脚本一直运行良好,直到上周。我怀疑是Ubuntu版本的更新,但可能是其他原因 以下是我得到的错误: 错误:无法打开zipfile[/mnt/batch/tasks/shared/01-AXAIS_HPC.zip] 拒绝许可 解压:无法找到或打开/mnt/batch/tasks/shared/01-AXAIS_HPC.zip 以下是代码的主要部分:Python Azure批处理-权限被拒绝的Linux节点,python,azure,azure-batch,Python,Azure,Azure Batch,我正在使用Azure批处理在几个Linux节点上运行python脚本(在创建池之后)。每个节点都使用14.04.5-LTS版本的Ubuntu 在脚本中,我在每个节点上上载几个文件,然后在每个节点上运行几个任务。但是,当我尝试执行第一个任务时,会出现“权限被拒绝”错误。实际上,这项任务是解压一些文件(仅供参考,这些zip文件的上传进展顺利)。 这个脚本一直运行良好,直到上周。我怀疑是Ubuntu版本的更新,但可能是其他原因 以下是我得到的错误: 错误:无法打开zipfile[/mnt/batch/
credentials = batchauth.SharedKeyCredentials(_BATCH_ACCOUNT_NAME,_BATCH_ACCOUNT_KEY)
batch_client = batch.BatchServiceClient(
credentials,
base_url=_BATCH_ACCOUNT_URL)
create_pool(batch_client,
_POOL_ID,
application_files,
_NODE_OS_DISTRO,
_NODE_OS_VERSION)
helpers.create_job(batch_client, _JOB_ID, _POOL_ID)
add_tasks(batch_client,
_JOB_ID,
input_files,
output_container_name,
output_container_sas_token)
使用add_任务:
def add_tasks(batch_service_client, job_id, input_files,
output_container_name, output_container_sas_token):
print('Adding {} tasks to job [{}]...'.format(len(input_files), job_id))
tasks = list()
for idx, input_file in enumerate(input_files):
command = ['unzip -q $AZ_BATCH_NODE_SHARED_DIR/01-AXAIS_HPC.zip -d $AZ_BATCH_NODE_SHARED_DIR',
'chmod a+x $AZ_BATCH_NODE_SHARED_DIR/01-AXAIS_HPC/00-EXE/linux/*',
'PATH=$PATH:$AZ_BATCH_NODE_SHARED_DIR/01-AXAIS_HPC/00-EXE/linux',
'unzip -q $AZ_BATCH_TASK_WORKING_DIR/'
'{} -d $AZ_BATCH_TASK_WORKING_DIR/{}'.format(input_file.file_path,idx+1),
'Rscript $AZ_BATCH_NODE_SHARED_DIR/01-AXAIS_HPC/03-MAIN.R $AZ_BATCH_TASK_WORKING_DIR $AZ_BATCH_NODE_SHARED_DIR/01-AXAIS_HPC $AZ_BATCH_TASK_WORKING_DIR/'
'{} {}' .format(idx+1,idx+1),
'python $AZ_BATCH_NODE_SHARED_DIR/01-IMPORT_FILES.py '
'--storageaccount {} --storagecontainer {} --sastoken "{}"'.format(
_STORAGE_ACCOUNT_NAME,
output_container_name,
output_container_sas_token)]
tasks.append(batchmodels.TaskAddParameter(
'Task{}'.format(idx),
helpers.wrap_commands_in_shell('linux', command),
resource_files=[input_file]
)
)
Split = lambda tasks, n=100: [tasks[i:i+n] for i in range(0, len(tasks), n)]
SPtasks = Split(tasks)
for i in range(len(SPtasks)):
batch_service_client.task.add_collection(job_id, SPtasks[i])
在这个问题上你有什么见解可以帮助我吗?多谢各位
Robin查看错误,即
error: cannot open zipfile [ /mnt/batch/tasks/shared/01-AXAIS_HPC.zip ]
Permission denied unzip: cannot find or open /mnt/batch/tasks/shared/01-AXAIS_HPC.zip,
似乎文件不在当前共享目录位置,或者权限不正确。前者的可能性更大
- 您使用共享目录方式有什么特殊原因吗?还有,你是如何上传文件的?(即,希望正确使用async和await,即在共享的_dir内容可用于节点之前,没有贪婪进程正在运行您的任务。)
- 旁注:您拥有该节点,因此可以使用RDP/SSH访问该节点,并发现共享目录实际上存在
- :
- 或者看