34

这对我来说是一个新问题:这个错误表明什么?

  /usr/bin/perl: bad interpreter: Text file busy

当时有几个磁盘密集型进程正在运行,但我以前从未见过该消息——事实上,这是我记得第一次在尝试运行 Perl 脚本时遇到错误。经过几秒钟的等待,我能够运行它,并且从那以后就没有看到这个问题,但是对此有一个解释会很好。

运行Ubuntu 9.04,文件系统为ext3。

4

6 回答 6

26

我猜你遇到了这个问题

bad interpreter: Text file busy如果您的 Perl 脚本(或任何其他类型的脚本)在您尝试执行时打开以供编写,Linux 内核将生成错误。

你没有说磁盘密集型进程在做什么。他们中的一个是否有可能打开脚本以进行读+写访问(即使它实际上没有写任何东西)?

于 2009-09-06T00:39:51.067 回答
7

发生这种情况是因为脚本文件已打开以供写入,可能是由尚未终止的流氓进程打开的。

解决方法:检查什么进程还在访问该文件,并终止它。

例如:

# /root/wordpress_plugin_updater/updater.pl --wp-path=/var/www/virtual/joel.co.in/drjoel.in/htdocs
-bash: /root/wordpress_plugin_updater/updater.pl: /root/perl/bin/perl: bad interpreter: Text file busy

在脚本名称上运行lsof(列出打开的文件命令):

# lsof | grep updater.pl
sftp-serv 4416            root    3r      REG            144,103    11043   33046751 /root/wordpress_plugin_updater/updater.pl

通过 PID 杀死进程:

kill -9 4416

现在尝试再次运行脚本。现在可以了。

# /root/wordpress_plugin_updater/updater.pl --wp-path=/www/htdocs
Wordpress Plugin Updater script v3.0.1.0.
Processing 24 plugins from
于 2014-05-28T13:04:08.320 回答
2

这总是与 perl 解释器 (/usr/bin/perl) 无法访问有关。事实上,它发生在 shell 脚本运行或 awk 或 #! 脚本顶部的行。

原因可能有很多……烫发、锁定文件、文件系统脱机等等。

这显然取决于问题发生时您运行它的确切时刻发生的事情。但我希望答案是你想要的。

于 2009-09-05T22:42:36.220 回答
2

如果脚本是在 Windows 或任何其他具有不同“本机”行尾的操作系统中编辑的,那么它可能就像CR(^M)在第一行末尾“隐藏”一样简单。Vi 改进后可以设置隐藏这个非本地行结尾。就我而言,我只是在 VI 中重新输入了有问题的第一行,错误就消失了。

于 2012-08-14T18:36:33.727 回答
2

如果您正在使用 gnu parallel 并且看到此错误,则可能是因为您正在从写入文件的同一位置流式传输文件...

于 2013-04-30T05:03:50.157 回答
0

我遇到了同样的问题,并且正在寻找使用该文件的内容不起作用。原来我只需要重新启动液滴和中提琴脚本现在可以工作了。

于 2020-06-16T11:18:24.000 回答