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

如何编写Bash脚本:运行command1时启动command2,完成后终止command1

Bash脚本实现command1与command2的协作执行

要实现启动command1后再触发command2,且command2执行完成后终止command1,可以通过记录后台进程PID的方式实现,具体脚本如下:

#!/bin/bash

# 启动command1并放入后台运行,记录其进程ID
command1 &
cmd1_pid=$!

# 确保command1已启动(可选:根据command1启动速度调整,也可用更严谨的进程检查)
sleep 1

# 启动command2,脚本会等待command2执行完毕
command2

# command2完成后,终止command1进程
if ps -p "$cmd1_pid" > /dev/null; then
    kill "$cmd1_pid"
fi

关键部分说明:

  • command1 &:将command1置于后台运行,不阻塞后续命令执行
  • $!:获取最近启动的后台进程PID,这里就是command1的进程ID,存入变量备用
  • 可选的sleep 1:给command1预留启动时间,避免command2先于command1启动。如果需要更可靠的检查,可替换为循环判断进程是否存在:
    # 循环等待command1进程启动
    while ! ps -p "$cmd1_pid" > /dev/null; do
        sleep 0.1
    done
    
  • command2:前台执行command2,脚本会暂停直到command2执行完成
  • 最后的if判断:先检查command1是否仍在运行,避免进程已退出时kill命令报错。如果需要强制终止,可使用kill -9 "$cmd1_pid"(不推荐优先使用,尽量给进程清理资源的机会)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 16:02:03