You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Shell脚本经sbatch提交后wget出现连接拒绝问题求助

问题

需要下载多个30GB以上的文件,编写了Shell脚本:

#!/bin/bash

WGETREF='https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/technical/reference/GRCh38_reference_genome/GRCh38_full_analysis_set_plus_decoy_hla.fa'

wget $WGETREF
chmod +x get-ref.sh

通过sbatch -A OD-projectID get-ref.sh提交脚本,但执行时出现连接拒绝错误:

Connecting to ftp.1000genomes.ebi.ac.uk (ftp.1000genomes.ebi.ac.uk)|193.62.193.140|:443... failed: Connection refused.

改用从文件读取URL的写法:

#!/bin/bash
wget -i url-ref.txt

问题依旧。直接在命令行执行wget可以正常下载,在脚本wget前添加ping google.com能临时解决,但想找更合适的优化方案。

环境信息:

  • Bash版本:GNU bash, version 4.4.23(1)-release (x86_64-suse-linux-gnu)
  • wget调试输出:
DEBUG output created by Wget 1.20.3 on linux-gnu.

Reading HSTS entries from /home/foa003/.wget-hsts
URI encoding = ‘UTF-8’
asking libproxy about url 'https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/technical/reference/GRCh38_reference_genome/GRCh38_full_analysis_set_plus_decoy_hla.fa'
libproxy suggest to use 'direct://'
Converted file name 'GRCh38_full_analysis_set_plus_decoy_hla.fa' (UTF-8) -> 'GRCh38_full_analysis_set_plus_decoy_hla.fa' (UTF-8)
--2023-05-18 11:36:52--  https://ftp.1000genomes.ebi.ac.uk/vol1/ftp/technical/reference/GRCh38_reference_genome/GRCh38_full_analysis_set_plus_decoy_hla.fa
Resolving ftp.1000genomes.ebi.ac.uk (ftp.1000genomes.ebi.ac.uk)... 193.62.193.140
Caching ftp.1000genomes.ebi.ac.uk => 193.62.193.140
Connecting to ftp.1000genomes.ebi.ac.uk (ftp.1000genomes.ebi.ac.uk)|193.62.193.140|:443... Closed fd 3
failed: Connection refused.
Releasing 0x00005555558eb020 (new refcount 1).

优化方案

1. 强制刷新DNS解析+增强wget重试策略

替代ping的轻量方式,直接针对目标域名刷新DNS,同时给wget添加重试参数提升稳定性:

#!/bin/bash
# 刷新目标域名DNS解析,丢弃输出
nslookup ftp.1000genomes.ebi.ac.uk > /dev/null 2>&1
# 连接被拒绝时自动重试,设置重试间隔和超时
wget --retry-connrefused --waitretry=5 --timeout=60 $WGETREF

2. 指定可靠DNS服务器下载

如果集群内置DNS解析存在异常,直接指定公共DNS服务器(如8.8.8.8):

#!/bin/bash
wget --dns-servers=8.8.8.8 --retry-connrefused --waitretry=5 $WGETREF

3. 添加短延迟等待网络就绪

部分集群节点启动后网络未完全初始化,添加短延迟再执行下载:

#!/bin/bash
sleep 10
wget --retry-connrefused --waitretry=5 $WGETREF

延迟时间可根据集群实际情况调整(5-30秒均可)。

4. 改用curl替代wget

curl的网络处理逻辑可能更适配集群环境,同时支持断点续传(适合大文件):

#!/bin/bash
# -C - 启用断点续传,-O 保存为原文件名
curl -C - -O $WGETREF

内容的提问来源于stack exchange,提问作者Rachel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 17:54:57