Linux如何停止sh脚本?

要关闭运行中的.sh脚本,在终端按Ctrl+C中断前台进程,若后台运行,先用ps找进程ID,再用kill [PID]终止。

在Linux系统中,关闭(终止)正在运行的 .sh 文件(Shell脚本)需要通过系统命令中断其进程,以下是详细操作步骤及方法:

Linux如何停止sh脚本?


理解进程终止原理

.sh 文件本身不是“服务”,而是通过Shell解释器(如/bin/bash)运行的脚本,关闭操作实际是终止其对应的进程,根据脚本运行状态选择不同方法:


终止前台运行的脚本

若脚本正在终端前台运行(例如通过 ./test.sh 启动):

  1. 快捷键终止
    按下 Ctrl + C 组合键,立即中断脚本。

    # 示例:运行后按 Ctrl+C
    $ ./test.sh
    ^C  # 脚本被强制终止
  2. 快捷键暂停
    若需临时暂停(非终止),按 Ctrl + Z 将脚本挂起到后台,再手动终止:

    $ ./test.sh
    ^Z  # 暂停脚本,返回终端
    [1]+  Stopped        ./test.sh
    $ jobs -l         # 查看后台任务(显示进程ID)
    [1]+  12345 Stopped   ./test.sh
    $ kill -9 12345   # 强制终止该进程

终止后台运行的脚本

若脚本在后台启动(./test.sh &):

Linux如何停止sh脚本?

  1. 通过 jobs 查找任务ID

    $ jobs -l         # 列出后台任务及进程ID
    [1]-  23456 Running   ./test.sh &
  2. 终止指定任务

    $ kill %1         # 终止任务ID为1的后台任务
    # 或
    $ kill 23456      # 直接终止进程ID

通过进程名/ID全局终止

若脚本未在当前终端运行,或需精确终止:

  1. 查找进程ID(PID)
    使用 pspgrep 定位进程:

    $ ps aux | grep test.sh    # 过滤脚本进程
    # 输出示例:user  34567  0.0  0.1  12345  6780 pts/0  S    10:00  0:00 /bin/bash ./test.sh
    $ pgrep -f test.sh        # 直接获取PID
    34567
  2. 终止进程

    Linux如何停止sh脚本?

    • 正常终止(允许资源清理):
      $ kill 34567      # 发送SIGTERM信号
    • 强制终止(立即结束,可能丢失数据):
      $ kill -9 34567   # 发送SIGKILL信号
  3. 按进程名批量终止

    $ pkill -f test.sh       # 终止所有匹配"test.sh"的进程
    # 或
    $ killall -9 test.sh     # 强制终止同名进程(需安装killall)

特殊情况处理

  1. 脚本卡死无响应
    优先用 kill -9 PID 强制终止,再检查脚本逻辑。

  2. 脚本产生子进程
    使用 pkill -P PID 终止子进程,或通过进程组终止:

    $ kill -- -PGID   # 注意负号表示进程组ID

注意事项

  1. 数据安全
    kill -9 是强制终止,可能导致未保存数据丢失,优先尝试 kill PID(默认SIGTERM)。
  2. 权限要求
    普通用户只能终止自己的进程,系统级脚本需 sudo 提权。
  3. 确认进程状态
    终止后执行 ps aux | grep test.sh 确认进程已退出。

总结步骤

  1. 定位脚本进程 → ps aux | grep 脚本名
  2. 根据运行状态选择方法 → 前台(Ctrl+C)、后台(jobs)、全局(pkill
  3. 发送终止信号 → kill [信号] PID
  4. 验证结果 → 再次检查进程列表

引用说明基于Linux内核标准进程管理机制,参考《Linux命令行与Shell脚本编程大全》及GNU Coreutils文档,操作命令兼容主流Linux发行版(Ubuntu/CentOS/Debian等)。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/24208.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月14日 20:25
下一篇 2025年6月14日 20:30

相关推荐

  • 如何在Java中快速停止运行命令?

    在Java中停止运行命令可通过中断线程、设置标志位或销毁进程实现,推荐使用协作式中断,避免强制终止线程导致的资源问题,对于外部进程调用destroy()方法强制结束。

    2025年6月9日
    100
  • 如何使用命令行参数

    命令行参数是在启动程序时附加在命令后的文本信息,程序启动后可以读取并解析这些参数,用于传递配置、文件名或执行选项等输入信息。

    2025年6月8日
    200
  • CAD命令窗口如何调出

    在CAD软件中调用命令主要有四种方式:直接在命令行输入命令全称或其别名(alias);在功能区(Ribbon)选项卡中点击相应的工具图标;在工具栏上选择对应的命令按钮;或通过顶部菜单栏查找并选择所需命令。

    2025年6月1日
    300
  • vim如何保存文件并退出?

    在 Vim 或 Vi 编辑器的命令模式下,先按 Esc 键确保进入命令模式,然后输入英文冒号 : 激活命令行,接着输入 wq,最后按 Enter 键执行,该命令将保存当前文件并退出编辑器。

    2025年6月13日
    200
  • 如何在Zabbix中高效执行自定义监控命令

    Zabbix可通过自定义监控项或触发器动作执行单独命令,在Agent配置中使用UserParameter定义脚本路径实现命令采集,或通过触发器配置远程命令/脚本实现告警后自动执行特定操作,适用于自动化监控与故障处理场景。

    2025年5月28日
    500

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN