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

在Bash中实现后台顺序运行任务的方法

解决方案

要实现同一时间仅运行一个program.py实例,同时让整个任务在后台执行(退出终端不中断),可以通过以下两种方式修改脚本:

方式1:脚本内部顺序执行,运行时将脚本后台启动

修改后的脚本(循环内无&,保证任务顺序执行):

#!/bin/bash

H="1 10 100"
K="0.01 0.1"

# 嵌套循环遍历所有参数组合,逐个执行任务
for H_val in ${H}
do
    for K_val in ${K}
    do
        # 为每个任务单独生成输出文件,避免日志混乱
        nohup python program.py $H_val $K_val > "program_H${H_val}_K${K_val}.out" 2>&1
    done
done

运行脚本时,用以下命令将整个脚本放到后台:

nohup bash your_script.sh > script_master.out 2>&1 &

方式2:脚本内部直接将循环后台化

如果希望执行脚本时自动后台运行,无需额外加&,可以把整个循环块放到后台:

#!/bin/bash

H="1 10 100"
K="0.01 0.1"

# 将整个循环放入后台执行
{
    for H_val in ${H}
    do
        for K_val in ${K}
        do
            nohup python program.py $H_val $K_val > "program_H${H_val}_K${K_val}.out" 2>&1
        done
    done
} &

关键说明

  • 去掉每个python命令后的&:让循环内的任务顺序执行,前一个任务完成后才会启动下一个。
  • 单独指定输出文件:每个program.py的日志会写入对应参数命名的文件(如program_H1_K0.01.out),避免所有日志混在一个nohup.out中,便于排查问题。
  • 后台运行整个脚本/循环:保证即使关闭终端,任务仍能继续执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:37:19