2009-09-05 13 views
25

これは私にとって新しいものです:このエラーは何を示していますか?/usr/bin/perl:悪いインタプリタ:テキストファイルが忙しい

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

あり時に実行されているディスクを集中プロセスのカップルがあったが、私は実際には—前にそのメッセージを見たことがない、これは私が実行しようとするとエラーになって思い出すことができます初めてですPerlスクリプト。数秒待ってから、私はそれを実行することができました。それ以来、この問題を見ていませんでしたが、これについて説明するのはうれしいでしょう。

Ubuntu 9.04を実行している場合、ファイルシステムはext3です。

+0

SF:http:// serverfaultも参照してください。com/questions/21561/bad-interpreter-text-file-busy – Ether

答えて

18

私はあなたがthis issueを遭遇したと思います。

Linuxカーネルは、Perlスクリプト(または他の種類のスクリプト)が実行しようとしたときに書き込み用に開いている場合、bad interpreter: Text file busyエラーを生成します。

ディスクを大量に消費しているプロセスが何をしているのかは分かりません。そのうちの1人が、スクリプトが実際に何も書いていなかったとしても、読み書き可能なアクセス権を持っていた可能性はありますか?

+0

それは妥当だと思う - 私はスクリプトに取り組んでいた、これは私がそれを保存し、それを実行しようとしたように起こった。 – chris

+3

"ディスクを大量に消費するプロセス"は、あなたのスクリプトに直接何もしませんでしたが、ディスクをビジー状態に保ち、スクリプトを書き留めていて、数秒間開いたままにしました。 – hobbs

+0

それは私が考えていることです - それはどんな場合でも意味をなさないようです。 – chris

1

これは、常にアクセス不可能なperlインタプリタ(/ usr/bin/perl)と関係があります。実際には、シェルスクリプトが実行されているときや、awkなどの何かが#!スクリプトの一番上にある行。

原因は、パーマネント、ロックされたファイル、ファイルシステムのオフライン、オン/オフなど多くのものになります。

明らかに、問題が発生したときに実行した正確な時点で何が起きているかによって異なります。しかし、私は答えがあなたが探していたものであることを願っています。

+1

エラーメッセージ "text file busy"は特定の意味を持ち、言及した問題が原因ではありません。 – duskwuff

+1

@duskwuff、手入れを凝らすには?あなたの知恵を他の人たちと分かち合うことができますか? (btw、私の研究は私が共有していることを正確に述べている)。 – Rap

+0

@duskwuff具体的な意味は、この回答が何を意味するのか正確に分かります。自分で試してください。/ usr/bin/perlをappendで開き、perlスクリプトを実行してみてください。はい、 "テキストファイル"は少し誤解を招いていますが、それが何十年もの間標準化されたエラーです。 –

0

Windowsでスクリプトを編集した場合、または異なる「ネイティブ」行末を持つ他のOSを編集した場合は、最初の行の末尾にCR(^M)というように簡単に表示されます。 Viの改善はに設定できます。このネイティブの行末は非表示になります。私の場合、VIの最初の行を再入力するだけで、エラーはなくなりました。あなたはGNUパラレルを使用していると、このエラーが表示された場合、あなたがファイルを書いている同じ場所からにファイルをストリーミングしているので、それはかもしれ

2

これは、スクリプトファイルので起こりますおそらく終了していない不正なプロセスによって、書き込みのために開いています。

解決方法:ファイルにアクセスしているプロセスを確認し、終了してください。

例:今すぐ

kill -9 4416 

実行してみてください:

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

はそのPIDによる処理を強制終了します。

# /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(リスト開いているファイルのコマンド)スクリプトを再度実行します。それは今働く。

# /root/wordpress_plugin_updater/updater.pl --wp-path=/www/htdocs 
Wordpress Plugin Updater script v3.0.1.0. 
Processing 24 plugins from