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

Python编写后立即执行shell脚本报Text file is busy错误如何解决

问题原因

你遇到的Text file is busy错误是由于文件句柄未释放导致的:当前你将执行脚本的ShellScriptHandeler.OpenShellscript.installSoftware()逻辑写在了with open('install.sh', 'w')的代码块内部,此时脚本文件还处于被打开写入的状态,文件缓冲区的内容可能还未完全刷入磁盘,文件句柄也没有被释放,系统判定文件正被占用,因此拒绝执行该脚本文件。

解决方法

  • 调整执行逻辑的缩进位置,将脚本执行代码移出with代码块。with上下文管理器会在块结束时自动关闭文件、完成内容落盘,此时再执行脚本就不会出现占用冲突,修改后代码如下:
if self.ShellInput == "install":
    if self.enterdPassword == True:
        self.instPack = input(str("Package Name: "))
        self.fullInstall = "echo " + self.userPassword + " | sudo -S apt -y install " + self.instPack
        with open('install.sh', 'w') as self.installShell:
            self.installShell.write(self.fullInstall)
            print("SOFTWARE IS NOW READY")
        # 调整缩进至with块外,文件关闭后再执行
        ShellScriptHandeler.OpenShellscript.installSoftware()
  • 可选优化:写入完成后可以先给生成的脚本添加可执行权限,避免后续触发权限错误,可添加代码os.chmod('install.sh', 0o755),注意需要提前导入os模块。
  • 冗余代码清理:你在apt命令中已经添加了-y参数,默认会自动同意所有安装确认提示,installSoftware方法中向标准输入写入yes\n的逻辑可以直接删除,不会影响正常安装流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:27:03