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

如何停止后台运行的指定shell脚本且不影响其他运行中的脚本?

仅终止第一个后台Shell脚本的实现方法

你可以通过以下三种常用方式实现需求,按操作便捷度排序:

方法1:通过任务号终止(仅适用于未关闭运行脚本的终端的场景,最快无误差)

  • 首先在当前运行脚本的终端执行jobs命令,查看当前终端的后台任务列表:
    输出样例如下:
    [1]  + running    ./first_script.sh
    [2]  - running    ./second_script.sh
    
    其中行首方括号内的数字就是任务编号,编号1对应你第一个转入后台的脚本。
  • 执行kill %1即可终止第一个脚本,将命令中的1替换为你实际查询到的第一个脚本的任务号即可。如果进程无响应无法正常终止,可以执行强制杀命令:kill -9 %1
  • 如果你在执行bg命令时已经记下了当时输出的任务号,可跳过查询步骤直接执行kill命令。

方法2:通过进程名匹配终止(适用于两个脚本文件名不一致的场景)

  • 先执行pgrep -f 第一个脚本的文件名确认匹配到的进程ID,比如第一个脚本名为demo1.sh,就执行pgrep -f demo1.sh,确认输出的PID只有你要终止的那一个。
  • 确认无误后执行pkill -f 第一个脚本的文件名即可终止目标脚本。

方法3:通过进程ID终止(适用所有场景,最稳妥)

  • 执行ps aux | grep 第一个脚本的文件名或者ps -ef | grep 第一个脚本的特征关键词,找到第一个脚本对应的PID(进程ID,为一串数字),注意排除grep自身的进程条目。
  • 执行kill 查询到的PID终止进程,无法正常终止时执行kill -9 查询到的PID即可。

注意:不要使用模糊匹配的杀进程命令(比如pkill sh、killall sh),否则会误杀第二个正在运行的Shell脚本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 09:54:03