这对我来说很新鲜:这个错误表示什么?
/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。
我猜你遇到了这个问题。
如果你尝试执行一个Perl脚本(或任何其他类型的脚本)时,它正在写入时,Linux内核将生成一个“bad interpreter: Text file busy”错误。
你没有说明磁盘密集型进程在做什么。有没有可能其中一个进程已经以读+写方式打开了该脚本(即使实际上并没有写入任何内容)?
# /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
通过进程ID杀死进程:
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
如果脚本在Windows或任何其他具有不同“本机”行尾的操作系统中进行编辑,那么问题可能只是在第一行末尾“隐藏”的CR (^M)
。 Vi可以设置隐藏这个非本地行尾。在我的情况下,我只需在VI中重新输入有问题的第一行,错误就消失了。
这通常与perl解释器(/usr/bin/perl)无法访问有关。实际上,当一个shell脚本正在运行或awk或其他在脚本顶部的#!行中时,它就会发生。
原因可能有很多...权限、锁定文件、文件系统离线等等。
显然,这取决于问题发生时您运行它时正在发生什么。但我希望答案是你要找的。
我也遇到过这个问题,通过grep查看文件的使用情况没有起作用。结果发现我只需要重新启动droplet,然后脚本就可以正常工作。