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

Mac系统下bash如何并行运行进程 解决sls启动后脚本延迟执行问题

Mac bash 多命令执行流程问题解决方案

核心问题原因

当前脚本中sls offline start默认以前台进程运行,会阻塞后续所有命令执行,只有该进程被手动终止后才会触发后续的新终端启动逻辑,和预期执行顺序不符。

修复后完整脚本

#!/bin/bash

testDirectory='/Users/jxxxx/Desktop/xxxxx/mad_team_training/Trimify/backend-operations/tests/pagination-integration.test.js'
deleteScript='/Users/jxxxx/Desktop/xxxxx/mad_team_training/Trimify/backend-operations/scripts/test-delete-table.sh'
echo "$testDirectory"
cd ../

# 后台启动sls offline,日志仍输出到当前终端,满足保留需求
sls offline start &
# 记录sls进程PID,用于后续终止
SLS_PID=$!

# 等待sls服务启动完成,可根据实际启动速度调整等待时间,也可替换为下方端口检测逻辑
sleep 15

# 新终端运行删除脚本
open -a Terminal.app $deleteScript

# 等待删除脚本执行完成
wait $!

# 终止sls进程
kill $SLS_PID

可选优化:替换固定等待为端口检测

如果你的sls offline启动后会监听固定端口(比如默认的3000),可以把上面的sleep 15替换为如下逻辑,实现启动完成后立即执行后续步骤,无需固定等待:

# 检测3000端口是否被监听,直到启动成功再继续
until nc -z localhost 3000; do
  echo "等待sls offline服务启动..."
  sleep 2
done

注意事项

如果删除脚本执行完成后终端不会自动退出,需要在test-delete-table.sh的末尾添加exit命令,确保脚本执行完后进程退出,wait命令才能正确捕获执行完成信号,自动终止sls进程。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:45:10