これは、おそらく終了していない不正なプロセスによって、スクリプト ファイルが書き込み用に開かれているために発生します。
解決策:どのプロセスがまだファイルにアクセスしているかを確認し、終了してください。
例:
# /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
スクリプトが Windows で編集された場合、または「ネイティブ」な行末が異なるその他の OS で編集された場合、CR(^M)
のように単純なものになる可能性があります。 最初の行の最後に「隠す」。改善された Vi は、非表示 に設定できます この非ネイティブの行末。私の場合、問題のある最初の行を VI に再入力するだけで、エラーは消えました。
この問題に遭遇したと思います。
Linux カーネルは bad interpreter: Text file busy
を生成します Perl スクリプト (またはその他の種類のスクリプト) を実行しようとしたときに書き込み用に開いていると、エラーが発生します。
ディスクを集中的に使用するプロセスが何をしていたかはわかりません。そのうちの 1 人がスクリプトを読み書きアクセス用に開いていた可能性はありますか (実際には何も書き込んでいなくても)?
これは常に、perl インタープリター (/usr/bin/perl) にアクセスできないことに関係しています。実際、シェルスクリプトが実行されているとき、または awk または #!スクリプトの先頭にある行。
原因はさまざまです... perms、ロックされたファイル、ファイルシステムのオフライン、およびオンとオフ。
問題が発生したときに実行した正確な瞬間に何が起こっていたかによって明らかに異なります。しかし、答えがあなたが探していたものであることを願っています.