Cela se produit parce que le fichier de script est ouvert en écriture, probablement par un processus malveillant qui ne s'est pas terminé.
Solution :Vérifiez quel processus accède toujours au fichier et arrêtez-le.
Ex :
# /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
Exécutez lsof
(commande list open files) sur le nom du script :
# lsof | grep updater.pl
sftp-serv 4416 root 3r REG 144,103 11043 33046751 /root/wordpress_plugin_updater/updater.pl
Tuez le processus par son PID :
kill -9 4416
Maintenant, essayez à nouveau d'exécuter le script. Cela fonctionne maintenant.
# /root/wordpress_plugin_updater/updater.pl --wp-path=/www/htdocs
Wordpress Plugin Updater script v3.0.1.0.
Processing 24 plugins from
Si le script a été édité sous Windows, ou tout autre système d'exploitation avec différentes fins de ligne "natives", cela pourrait être aussi simple qu'un CR(^M)
"hiding" à la fin de la première ligne. Vi amélioré peut être configuré pour masquer cette fin de ligne non native. Dans mon cas, j'ai simplement retapé la première ligne incriminée dans VI et l'erreur a disparu.
Je suppose que vous avez rencontré ce problème.
Le noyau Linux générera un bad interpreter: Text file busy
erreur si votre script Perl (ou tout autre type de script) est ouvert en écriture lorsque vous essayez de l'exécuter.
Vous ne dites pas ce que faisaient les processus gourmands en disque. Est-il possible que l'un d'eux ait ouvert le script pour un accès en lecture + écriture (même s'il n'écrivait rien) ?
Cela a toujours à voir avec l'inaccessibilité de l'interpréteur perl (/usr/bin/perl). En fait, cela se produit lorsqu'un script shell est en cours d'exécution ou awk ou quoi que ce soit sur le #! ligne en haut du script.
La cause peut être plusieurs choses...perms, fichier verrouillé, système de fichiers hors ligne, et ainsi de suite.
Cela dépendrait évidemment de ce qui se passait au moment exact où vous l'avez exécuté lorsque le problème est survenu. Mais j'espère que la réponse correspond à ce que vous cherchiez.