web-dev-qa-db-ja.com

/ usr / bin / Perl:不正なインタープリター:テキストファイルがビジーです

これは私にとって新しいものです:このエラーは何を示していますか?

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

当時、ディスクを集中的に使用するプロセスがいくつか実行されていましたが、そのメッセージは今まで見たことがありません。実際、Perlスクリプトを実行しようとしたときにエラーが発生したのを覚えているのはこれが初めてです。数秒待った後、私はそれを実行することができ、それ以来問題を見ていませんが、これについての説明があればいいでしょう。

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

30
chris

この問題 に遭遇したと思います。

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

ディスクを多用するプロセスが何をしていたかは言いません。それらの1つがスクリプトを読み取り+書き込みアクセス用に開いていた可能性はありますか(実際に何も書き込んでいない場合でも)。

21
cjm

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

解決策:ファイルにまだアクセスしているプロセスを確認して、ファイルを終了します。

例えば:

# /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(list open filesコマンド)を実行します。

# 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
5
Joel G Mathew

GNU Parallelを使用していて、このエラーが表示される場合は、ファイルを書き込んでいる場所と同じ場所からファイルをストリーミングしていることが原因である可能性があります...

2
OwenRackham

スクリプトがWindows、または「ネイティブ」の行末が異なる他のOSで編集された場合、最初の行の終わりにCR(^M) "非表示"と同じくらい簡単になる可能性があります。 Viの改善はhideに設定できます。この非ネイティブの行末です。私の場合、問題のある最初の行をVIに再入力しただけで、エラーは解消しました。

1
Linux User

これは常に、Perlインタープリター(/ usr/bin/Perl)にアクセスできないことに関係しています。実際、これはシェルスクリプトが実行されているとき、またはawkなどが#にあるときに発生します。スクリプトの上部の行。

原因は多くのことが考えられます...パーマ、ロックされたファイル、オフラインのファイルシステム、そして何度も。

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

1
Rap