Ciò accade perché il file di script è aperto per la scrittura, probabilmente da un processo non autorizzato che non è terminato.
Soluzione:controlla quale processo sta ancora accedendo al file e terminalo.
Ad esempio:
# /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
Esegui lsof
(comando list open files) sul nome dello script:
# lsof | grep updater.pl
sftp-serv 4416 root 3r REG 144,103 11043 33046751 /root/wordpress_plugin_updater/updater.pl
Uccidi il processo con il suo PID:
kill -9 4416
Ora prova a eseguire di nuovo lo script. Ora funziona.
# /root/wordpress_plugin_updater/updater.pl --wp-path=/www/htdocs
Wordpress Plugin Updater script v3.0.1.0.
Processing 24 plugins from
Se lo script è stato modificato in Windows o in qualsiasi altro sistema operativo con terminazioni di riga "native" diverse, potrebbe essere semplice come un CR(^M)
"nascosto" alla fine della prima riga. Vi migliorato può essere impostato per nascondere questa fine di riga non nativa. Nel mio caso ho semplicemente riscritto la prima riga offensiva in VI e l'errore è scomparso.
Immagino tu abbia riscontrato questo problema.
Il kernel Linux genererà un bad interpreter: Text file busy
errore se il tuo script Perl (o qualsiasi altro tipo di script) è aperto per la scrittura quando tenti di eseguirlo.
Non dici cosa stavano facendo i processi ad alta intensità di disco. È possibile che uno di loro avesse lo script aperto per l'accesso in lettura e scrittura (anche se in realtà non stava scrivendo nulla)?
Questo ha sempre a che fare con l'inaccessibilità dell'interprete perl (/usr/bin/perl). In effetti, accade quando uno script di shell è in esecuzione o awk o qualunque cosa sia su #! riga all'inizio dello script.
La causa può essere molte cose... permanenti, file bloccato, file system offline e così via.
Ovviamente dipenderebbe da cosa stava accadendo nel momento esatto in cui lo hai eseguito quando si è verificato il problema. Ma spero che la risposta sia quella che stavi cercando.