如何编写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
相关产品推荐
相关产品推荐

