当前位置: 首页 > news >正文

[经验总结]Exec format error——Shebang解释器声明省略的锅

1. 问题背景

使用keepalived部署高可用时,发现其执行指定shell检查脚本报了Exec format error的错误,如图。
在这里插入图片描述
根据我对脚本的分析,最终确定了是脚本缺少Shebang教师齐声明导致的问题。

2. 原因解析

2.1 Shebang 解释器声明

#!(称为 Shebang 或 Hashbang)是脚本的第一行,用于指定解释器路径。
当系统执行脚本时,内核会根据 Shebang 调用对应的解释器。

2.2 未添加Shebang的影响

如未添加Shebang,那么脚本的执行方——系统或者指定应用,将会已默认方式解析该脚本。

  • 如果是系统执行了该脚本,那么默认一般是bash或者csh。(可用env命令查看shell变量的取值,图下图)
  • 如果是Keepalived执行该脚本,那么默认的解析方式将不会是shell,而是二进制execve的形式。
    在这里插入图片描述

2.3 Keepalived 调用方式的影响

Keepalived 通过 execve 系统调用直接执行脚本,而非通过 shell 解释器。
若脚本缺少 Shebang,内核无法识别文件类型,直接报错(错误码 8: Exec format error)。

3. 总结

因此平常看似可有可无的一句声明,建议习惯性地在每个脚本中进行注明,已避免产生此类乌龙。


原创,转发请注明。

相关文章:

  • 非平衡数据的处理
  • 计算机网络——子网掩码
  • CF1363C Game On Leaves【题解】
  • 使用Nokov度量运动捕捉系统进行定位
  • Elasticsearch --- 相关基础知识整理
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(5)
  • HTML前端手册
  • AI编程,常见的AI编程工具有哪些?如何用AI编程做一个简单的小软件?
  • Axure高保真Element框架元件库
  • 无线通信中 RSRP、RSRQ、RSSI、SINR
  • 【Hudi-SQL DDL创建表语法】
  • 多视图几何--1关于变换-1.0写在前面的话
  • 【多模态目标检测】【AAAI 2025】FD2-Net
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例1:基础表格
  • kotlin高级用法总结
  • ArcGIS Pro 经纬网添加全解析:从布局到样式优化
  • Adobe Firefly 技术浅析(一)
  • hive on tez如何设置写hdfs的数据文件为gz压缩
  • Python库之PyAutoGUI使用操作文本文件
  • e2studio开发RA4M2(15)----配置RTC时钟及显示时间
  • 招工做的网站/域名注册优惠
  • 百度网站名称和网址/一份完整的市场调查方案
  • 网站建设流程咨询/站长工具是干嘛的
  • 网站是否wordpress/餐饮培训
  • 建设网站总经理讲话范本/谷歌站长平台
  • 房地产 网站 案例/专门做排行榜的软件