/ usr / bin / perl:bad interpreter:文本文件繁忙

时间:2009-09-05 22:24:57

标签: linux perl interpreter ubuntu-9.04

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

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

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

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

6 个答案:

答案 0 :(得分:21)

我猜你遇到了this issue

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

您没有说出磁盘密集型进程正在做什么。是否有可能其中一个脚本打开了读取+写入权限(即使它实际上没有写任何东西)?

答案 1 :(得分:5)

这是因为脚本文件是打开的,可能是由一个尚未终止的恶意进程打开。

解决方案:检查仍在访问文件的进程,并终止它。

例如:

# /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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

这总是与perl解释器(/ usr / bin / perl)不可访问有关。实际上,它发生在shell脚本运行或awk或#上的任何内容时!脚本顶部的行。

原因可能是很多东西......烫发,锁定文件,文件系统离线,等等。

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

答案 4 :(得分:1)

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

答案 5 :(得分:0)

我遇到了同样的问题,反复尝试以查看使用该文件的内容无效。事实证明,我只需要重新启动Droplet,中提琴脚本现在可以工作了。