这对我来说是新的:这个错误是什么意思?
/usr/bin/perl: bad interpreter: Text file busy
当时有几个磁盘密集型进程正在运行,但是我从来没有见过这个消息,事实上,这是我第一次记得在运行Perl脚本时遇到错误。 等了几秒钟后,我就可以运行了,从那时起还没有看到这个问题,但是对此有一个解释是很好的。
运行Ubuntu 9.04,文件系统是ext3。
我猜你遇到过这个问题 。
Linux内核将生成一个bad interpreter: Text file busy
如果您的Perl脚本(或任何其他类型的脚本)在尝试执行时处于打开状态,则会出现bad interpreter: Text file busy
错误。
你不说什么磁盘密集型进程正在做什么。 是否有可能其中一个脚本打开读取+写入权限(即使它实际上没有写入任何东西)?
如果你正在使用gnu parallel,并且你看到这个错误,那么可能是因为你正在从你正在写文件的同一个地方流入一个文件。
发生这种情况是因为脚本文件已经被写入,可能是没有终止的流氓程序。
解决方案:检查哪个进程正在访问该文件,并终止它。
例如:
# /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中重新输入了违规的第一行,错误消失了。