You need to enable JavaScript to run this app. 如何在一个.sh脚本运行结束后终止另一个正在运行的.sh脚本?
优惠活动
大模型
产品
解决方案
定价
更多

如何在一个.sh脚本运行结束后终止另一个正在运行的.sh脚本?

解决方案

先纠正当前运行逻辑的问题

你目前使用的sh example.sh; sh playmusic.sh是顺序执行逻辑,只有example.sh完全运行结束后才会启动playmusic.sh,没法实现你需要的「example运行期间播放音乐、运行结束就停」的效果。


场景1:还未启动命令,想实现自动停止效果

你可以把音乐播放脚本放到后台运行,记录它的进程ID,等example.sh执行结束后主动终止对应进程即可,完整命令如下:

# 后台启动音乐播放脚本
sh playmusic.sh &
# 记录音乐脚本的进程ID
PLAY_PID=$!
# 运行你的业务脚本
sh example.sh
# 业务脚本运行结束后直接终止音乐进程
kill $PLAY_PID

以上逻辑执行后,只要example.sh跑完,音乐就会自动停止,不需要你手动操作。


场景2:已经按原有命令启动,需要手动终止正在运行的音乐

如果现在example.sh已经跑完,playmusic.sh正在前台循环播放,可选以下任意一种方法终止:

  • 方法1:在当前运行命令的终端按下Ctrl + C,即可直接终止前台运行的playmusic.sh
  • 方法2:如果终端不在前台/已经被关闭,直接杀所有mpg123进程即可停止音乐,命令如下:
    pkill mpg123
    
  • 方法3:如果只想终止当前这个playmusic.sh进程,可以先查进程ID再杀:
    1. 执行ps aux | grep playmusic.sh,找到对应进程第二列的PID数值
    2. 执行kill 你查到的PID即可,进程无响应的话可以换成kill -9 你查到的PID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 04:57:03