GNU/Linux >> Tutoriels Linux >  >> Linux

/usr/bin/perl :mauvais interpréteur :fichier texte occupé

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.


Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. /usr/bin Vs /usr/local/bin Sous Linux ?

  3. Linux – Fusionner /usr/bin et /usr/sbin dans /bin (gnu/linux) ?

  4. Installer les binaires dans /bin, /sbin, /usr/bin et /usr/sbin, interactions avec --prefix et DESTDIR

  5. Changer de répertoire et exécuter le fichier en une seule commande

Script bash :mauvais interpréteur

./configure :/bin/sh^M :mauvais interpréteur

autorisation refusée pour composer dans /usr/local/bin/

cmake --version pointe vers /usr/bin/cmake tandis que cmake pointe vers /usr/local/bin

Quelle est la signification de /usr/sbin, /usr/local/sbin et /usr/local/bin ?

Différence entre /bin et /usr/bin