Ini terjadi karena file skrip terbuka untuk ditulis, kemungkinan oleh proses nakal yang belum dihentikan.
Solusi:Periksa proses apa yang masih mengakses file, dan hentikan.
Misalnya:
# /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
Jalankan lsof
(daftarkan perintah buka file) pada nama skrip:
# lsof | grep updater.pl
sftp-serv 4416 root 3r REG 144,103 11043 33046751 /root/wordpress_plugin_updater/updater.pl
Hentikan proses dengan PID-nya:
kill -9 4416
Sekarang coba jalankan skrip lagi. Ini berfungsi sekarang.
# /root/wordpress_plugin_updater/updater.pl --wp-path=/www/htdocs
Wordpress Plugin Updater script v3.0.1.0.
Processing 24 plugins from
Jika skrip diedit di Windows, atau OS lain dengan akhiran baris "asli" yang berbeda, itu bisa sesederhana CR(^M)
"bersembunyi" di akhir baris pertama. Vi Improved dapat diatur untuk hide akhir baris bukan asli ini. Dalam kasus saya, saya cukup mengetik ulang baris pertama yang menyinggung di VI dan kesalahannya hilang.
Saya kira Anda mengalami masalah ini.
Kernel Linux akan menghasilkan bad interpreter: Text file busy
kesalahan jika skrip Perl Anda (atau jenis skrip lainnya) terbuka untuk ditulis saat Anda mencoba menjalankannya.
Anda tidak mengatakan apa yang dilakukan proses intensif disk. Mungkinkah salah satu dari mereka membuka skrip untuk akses baca+tulis (walaupun itu tidak benar-benar menulis apa pun)?
Ini selalu berkaitan dengan juru bahasa perl (/usr/bin/perl) yang tidak dapat diakses. Bahkan, itu terjadi ketika skrip shell sedang berjalan atau awk atau apa pun yang ada di #! baris di bagian atas skrip.
Penyebabnya bisa banyak hal... perm, file terkunci, sistem file offline, dan seterusnya.
Itu jelas akan tergantung pada apa yang terjadi pada saat yang tepat Anda menjalankannya ketika masalah terjadi. Tapi saya harap jawabannya adalah apa yang Anda cari.