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

Slurm脚本使用--wait参数时,能否实时显示等待时长?

在Slurm脚本中用--wait时实时显示等待时长的方法

Slurm自带的--wait参数本身没有实时显示等待时长的功能,但你可以通过自己添加简单的计时逻辑来实现这个需求。

核心思路

  1. 记录等待开始的时间戳
  2. 后台启动一个循环进程,定期计算并输出已等待的时长
  3. 主任务完成后终止计时进程

示例脚本

下面是一个结合srun --wait的完整示例:

#!/bin/bash
#SBATCH --job-name=wait-timer
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=4

# 记录等待开始的时间(秒级时间戳)
start_time=$(date +%s)

# 后台启动计时进程,每10秒更新一次等待时长
(
    while true; do
        current_time=$(date +%s)
        elapsed=$((current_time - start_time))
        # 格式化为 时:分:秒 并覆盖当前行输出
        printf "\r已等待时长: %02d:%02d:%02d" $((elapsed/3600)) $((elapsed%3600/60)) $((elapsed%60))
        sleep 10
    done
) &
# 保存计时进程的PID,方便后续终止
timer_pid=$!

# 执行带--wait的srun命令(--wait=0表示一直等待所有任务完成)
srun --wait=0 your_parallel_command_here

# 主任务完成后,杀死计时进程并换行
kill $timer_pid
echo ""

关键细节说明

  • \r是回车符,作用是让每次输出覆盖当前行,避免大量重复刷屏,实现"实时更新"的视觉效果
  • 可以调整sleep的时间(比如改成1秒)来提高更新频率,但太频繁可能会增加输出负载
  • 如果是用sbatch等待其他作业完成(比如配合sacct或squeue轮询),同样可以套用这个计时逻辑,把srun --wait的部分换成你的等待判断循环

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:05:23