在Slurm提交任务时规避密钥环密码验证并解决路径错误
解决Slurm提交CDS数据下载任务的两个问题
问题1:slurm_script不是目录错误
出现slurmstepd: error: execve(): /var/spool/slurmd/job....../slurm_script: Not a directory错误,按以下步骤排查解决:
- 检查Slurm提交脚本的shebang行:确保第一行是
#!/bin/bash(或你使用的对应shell路径),不能写成目录路径。 - 赋予提交脚本可执行权限:执行
chmod +x your_submit_script.sh,确保Slurm能正常执行该脚本。 - 核对提交命令:确认
srun或sbatch后面跟的是脚本文件路径,而非目录,比如正确命令是sbatch ./download_cds.sh,不是sbatch ./some_directory/。
问题2:密钥环密码交互问题
直接运行Rscript file.R需要输入密钥环密码,Slurm任务无交互环境,解决方法如下:
- 推荐方案:使用CDS API配置文件
- 在用户主目录创建
.cdsapirc文件,内容格式:url: https://cds.climate.copernicus.eu/api/v2 key: 你的CDS用户UID:你的API密钥 - 在R脚本开头添加环境变量配置,让cdsapi读取该文件:
Sys.setenv(CDSAPI_RC = "~/.cdsapirc") library(cdsapi)
- 在用户主目录创建
- 备选方案:预解锁密钥环(仅适配特定集群环境)
在Slurm提交脚本中添加解锁密钥环的命令,避免交互需求:
注意:这种方法依赖集群的密钥环服务配置,不一定适用于所有集群。eval $(gnome-keyring-daemon --start) export SSH_AUTH_SOCK
内容的提问来源于stack exchange,提问作者CovetTachi
相关产品推荐
相关产品推荐

