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

Expect调用的rsync运行10-15秒后自动中断问题如何解决

问题根因

  • 核心触发原因是expect默认超时时间为10秒,当rsync同步耗时超过10秒阈值时,expect会直接终止等待流程,提前结束同步任务,跳转到脚本下一个执行步骤,和10-15秒中断的现象完全吻合。
  • 次要触发原因:rsync运行过程中输出的进度条、警告提示等内容未被现有expect规则匹配,也可能触发提前退出逻辑。

修复方案

修改f_rsync函数,在expect逻辑开头调整超时设置即可,修改后代码如下:

function f_rsync
{
/usr/bin/expect <<EOF
# 关闭超时限制,值为-1表示永不超时,也可以设为3600表示最多等待1小时
set timeout -1
spawn rsync -P username@host.something.com:/something/$FOLDERNAME/*.fastq.gz /tmp/working_dir/$FOLDERNAME
expect "Enter passphrase for key '/home/username/.ssh/id_rsa':"
send "PASSWORD\n"
expect eof
EOF
}

额外优化建议

  • 生产环境不建议明文存储密码到脚本中,优先配置ssh-agent缓存密钥密码,或者使用专用无密码ssh密钥做同步,安全性更高。
  • 可以给rsync命令增加--partial参数,避免网络波动导致同步中断后需要重新传输整个文件。
  • 脚本中所有变量调用建议加双引号,比如mkdir "$FOLDERNAME",避免目录名包含特殊字符时执行出错。
  • 可增加同步成功校验逻辑,判断rsync返回值为0后再执行后续FastQC步骤,避免空目录跑任务报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:15:04