如何强制清除/bin/bash: bad interpreter: Text file busy临时错误
问题根因与解决方案
你遇到的/bin/bash: bad interpreter: Text file busy是内核抛出的ETXTBSY错误,本质是内核判定你要执行的文件仍被进程以写入模式打开,为了避免执行到半写入的损坏内容,直接拒绝了执行请求。
即时清除错误的命令
不需要被动等待,执行以下命令即可1秒内恢复脚本执行:
- 优先用刷缓存命令,无副作用,写完脚本直接带上执行即可:
sync -f /scripts/MyNewScript && bash /scripts/MyNewScript
- 如果刷完缓存仍报错,直接清理该文件的所有残留占用句柄:
fuser -k /scripts/MyNewScript sync -f /scripts/MyNewScript
问题根因说明
你看到的fuse.gvfsd-fuse相关提示只是lsof扫描不到普通用户的gvfs挂载点的警告,和本问题完全无关;NFS也不是诱因,你之前的怀疑只是场景巧合。
这个问题是Fedora 35默认搭载的5.14版本内核的已知bug:
- 你保持编辑器打开的习惯本身没问题,但现在主流编辑器默认采用「原子保存」逻辑:保存文件时不会直接写入原文件,而是先生成临时文件写入完整内容,再通过rename操作覆盖原文件。5.14内核在处理这类rename操作时,存在概率性的写句柄泄漏问题,要等页缓存超时(数秒到数分钟不等)才会释放对应的写入锁,就会出现你遇到的时好时坏、等待时间不固定的报错。
- 你二十多年使用Fedora没遇到过同类问题,是因为旧版本内核不存在这个bug,旧版本编辑器的保存逻辑也不会触发该泄漏。
- 你执行lsof后很快恢复也只是巧合:lsof扫描文件时会触发inode引用计数刷新,刚好把内核泄漏的写句柄释放了。
永久修复方案
不需要重装系统或者降级内核,改两个配置即可彻底解决:
- 关闭编辑器的原子保存/备份文件功能
- Vim用户在
~/.vimrc中添加配置:set nobackup nowritebackup - Gedit用户在设置中关闭「保存前创建备份文件」选项
- VS Code用户在设置中搜索
files.useAtomicSave,将值改为false
- Vim用户在
- 调整内核参数规避句柄泄漏问题,执行以下命令立即生效,重启后配置永久保留:
echo 'fs.protected_regular = 0' >> /etc/sysctl.conf sysctl -p
该配置仅关闭普通文件的特定写保护逻辑,对系统安全性无明显影响,桌面、服务器环境均可使用。
内容的提问来源于stack exchange,提问作者Richard T
相关产品推荐
相关产品推荐

