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

如何在Bash脚本中实现当前程序被kill时触发告警

Bash脚本捕获kill信号实现自定义告警逻辑

在Bash中可以通过内置的trap命令绑定信号处理函数,实现脚本收到终止信号时执行自定义的告警、清理操作。需要注意:操作系统层面的SIGKILL信号(对应kill -9命令)无法被捕获、拦截,这种场景下自定义逻辑不会触发,属于系统级限制没有绕过方案。

实现示例

#!/bin/bash

# 定义信号处理函数,收到指定kill类信号时执行
on_kill() {
    echo "trying to kill the demo program ... "
    sleep 5s
    echo "demo program killed"
    # 处理完逻辑后主动退出进程,避免后续原有代码继续执行
    exit 0
}

# 绑定信号处理函数到常见的终止信号:
# SIGTERM:普通kill命令默认发送的信号
# SIGINT:用户按Ctrl+C触发的中断信号
# SIGHUP:运行脚本的终端断开时触发的信号
trap on_kill SIGTERM SIGINT SIGHUP

# ----------------------
# 此处放置你的原有程序逻辑
# 以下为示例模拟程序长时间运行
echo "demo program is running, PID: $$"
while true; do
    sleep 1
done

补充说明

  • 你可以根据需求修改on_kill函数内的逻辑,比如将打印操作替换为发送邮件、企业微信、短信告警的命令
  • 如果需要捕获其他类型的信号,直接将信号名追加到trap命令的信号列表中即可
  • 信号处理函数末尾必须加exit主动退出,否则脚本执行完自定义逻辑后会回到原来的执行流程继续运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:57:04