这对我来说是一个新问题:这个错误表明什么?
/usr/bin/perl: bad interpreter: Text file busy
当时有几个磁盘密集型进程正在运行,但我以前从未见过该消息——事实上,这是我记得第一次在尝试运行 Perl 脚本时遇到错误。经过几秒钟的等待,我能够运行它,并且从那以后就没有看到这个问题,但是对此有一个解释会很好。
运行Ubuntu 9.04,文件系统为ext3。
这对我来说是一个新问题:这个错误表明什么?
/usr/bin/perl: bad interpreter: Text file busy
当时有几个磁盘密集型进程正在运行,但我以前从未见过该消息——事实上,这是我记得第一次在尝试运行 Perl 脚本时遇到错误。经过几秒钟的等待,我能够运行它,并且从那以后就没有看到这个问题,但是对此有一个解释会很好。
运行Ubuntu 9.04,文件系统为ext3。
我猜你遇到了这个问题。
bad interpreter: Text file busy
如果您的 Perl 脚本(或任何其他类型的脚本)在您尝试执行时打开以供编写,Linux 内核将生成错误。
你没有说磁盘密集型进程在做什么。他们中的一个是否有可能打开脚本以进行读+写访问(即使它实际上没有写任何东西)?
发生这种情况是因为脚本文件已打开以供写入,可能是由尚未终止的流氓进程打开的。
解决方法:检查什么进程还在访问该文件,并终止它。
例如:
# /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
这总是与 perl 解释器 (/usr/bin/perl) 无法访问有关。事实上,它发生在 shell 脚本运行或 awk 或 #! 脚本顶部的行。
原因可能有很多……烫发、锁定文件、文件系统脱机等等。
这显然取决于问题发生时您运行它的确切时刻发生的事情。但我希望答案是你想要的。
如果脚本是在 Windows 或任何其他具有不同“本机”行尾的操作系统中编辑的,那么它可能就像CR(^M)
在第一行末尾“隐藏”一样简单。Vi 改进后可以设置隐藏这个非本地行结尾。就我而言,我只是在 VI 中重新输入了有问题的第一行,错误就消失了。
如果您正在使用 gnu parallel 并且看到此错误,则可能是因为您正在从写入文件的同一位置流式传输文件...
我遇到了同样的问题,并且正在寻找使用该文件的内容不起作用。原来我只需要重新启动液滴和中提琴脚本现在可以工作了。