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

HPC串行作业脚本优化:防止单任务结束终止全任务

解决HPC串行任务单个完成后其余任务终止的问题

原脚本的核心问题是:最后一个任务以前台模式运行,当它结束时整个bash脚本会退出;而之前循环中启动的后台任务(带&)属于当前脚本的进程组,脚本退出时这些后台进程会收到SIGHUP信号被终止。即使循环中的后台任务先完成,只要最后一个前台任务结束,剩余后台任务仍会被终止。

以下是三种可行的修改方案:

方案1:用nohup让任务脱离终端控制

给所有后台任务添加nohup命令,让任务忽略SIGHUP信号,即使脚本退出也能持续运行:
修改循环内的任务启动语句:

nohup application > log 2>&1 &

最后一个任务也改为后台+nohup模式:

cd LastFolder
nohup application > log 2>&1 &

方案2:用disown分离任务与当前脚本

启动后台任务后立即执行disown,将任务从当前shell的作业列表中移除,脚本退出时不会终止这些任务:
循环内的修改:

application > log 2>&1 &
disown

最后一个任务的修改:

cd LastFolder
application > log 2>&1 &
disown

方案3:让脚本等待所有任务完成

将最后一个任务改为后台运行,再用wait命令让脚本等待所有后台进程完成,这样单个任务结束不会影响其他任务,脚本直到全部任务完成才退出:

cd LastFolder
application > log 2>&1 &
wait

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:21:35