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

如何从单个Bash脚本启动多独立PID的ChanDataStream_Sim实例?

批量并行启动ChanDataStream_Sim进程的修改方案

核心修改:让进程后台独立运行

原脚本串行执行的原因是每个ChanDataStream_Sim命令会阻塞循环,直到进程被手动终止。只需在命令末尾加上&,就能让每个进程在后台独立启动,循环会立刻处理下一个通道:

#!/bin/bash

# 所有需要模拟数据流的通道
channels=(3002 1001 4003)

# 模拟数据的优先级
priority=(IDLE REALTIME HIGH)

# 绑定的守护进程ID
objserv=(83 82 81)

length=${#channels[@]}
for (( i=0; i<$length; i++ ))
do
    # 启动后台进程,每个实例拥有独立PID
    ChanDataStream_Sim ${channels[$i]} -d -p ${priority[$i]} -s ${objserv[$i]} &
done

# 可选:如果需要脚本等待所有后台进程结束再退出,取消下面一行的注释
# wait

进阶优化:解决会话中断导致进程停止的问题

如果当前SSH会话断开,后台运行的进程默认会被终止。可以用nohup让进程脱离会话,同时给每个通道单独生成日志文件,方便后续排查:

#!/bin/bash

channels=(3002 1001 4003)
priority=(IDLE REALTIME HIGH)
objserv=(83 82 81)

length=${#channels[@]}
for (( i=0; i<$length; i++ ))
do
    chan=${channels[$i]}
    # 用通道号命名日志文件,输出和错误都写入日志
    nohup ChanDataStream_Sim $chan -d -p ${priority[$i]} -s ${objserv[$i]} > ./chan_${chan}_log.out 2>&1 &
    echo "已启动通道$chan,PID为 $!"
done

修改后每个进程会在后台持续运行,即使SSH断开也不会停止,日志会保存在当前目录下的chan_XXX_log.out文件里,启动时还会打印每个进程的PID,方便后续手动终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 18:52:10