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

Ceci est nouveau pour moi: Qu'est-ce que cette erreur indique?

  /usr/bin/perl: bad interpreter: Text file busy

Il y avait quelques processus gourmands en disque en cours d'exécution à l'époque, mais je n'ai jamais vu ce message auparavant-en fait, c'est la première fois que je me souviens d'avoir eu une erreur en essayant D'exécuter un script Perl. Après quelques secondes d'attente, j'ai été capable de l'exécuter, et n'ai pas vu le problème depuis, mais il serait bien d'avoir une explication pour cela.

Sous Ubuntu 9.04, le système de fichiers est ext3.

27
demandé sur cjm 2009-09-06 02:24:56

5 réponses

Je suppose que vous avez rencontré ce problème .

Le noyau Linux génère une erreur bad interpreter: Text file busy si votre script Perl (ou tout autre type de script) est ouvert à l'é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'entre eux ait ouvert le script pour un accès en lecture+écriture(même s'il n'écrivait rien)?

20
répondu cjm 2014-12-12 09:56:37

Cela se produit parce que le fichier de script est ouvert pour l'écriture, peut - être par un processus voyou qui ne s'est pas terminé.

Solution: Vérifiez quel processus accède toujours au fichier et terminez-le.

Par exemple:

# /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écuter lsof (liste les fichiers ouverts de commande) 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

Tue le processus par son PID:

kill -9 4416

Essayez à nouveau d'exécuter le script. Il fonctionne maintenant.

# /root/wordpress_plugin_updater/updater.pl --wp-path=/www/htdocs
Wordpress Plugin Updater script v3.0.1.0.
Processing 24 plugins from
3
répondu Droidzone 2014-05-28 15:42:03

Si vous utilisez gnu parallel et que vous voyez cette erreur, c'est peut-être parce que vous diffusez un fichier depuis le même endroit que vous écrivez le fichier...

2
répondu OwenRackham 2013-04-30 05:03:50

Ce a toujours à voir avec l'interpréteur perl (/usr/bin/perl) étant inaccessible. En fait, cela arrive quand un script shell est en cours d'exécution ou awk ou tout ce qui est sur le #! ligne en haut du script.

La cause peut être beaucoup de choses ... perms, fichier verrouillé, système de fichiers hors ligne, et sur et sur.

Cela dépendrait évidemment de ce qui se passait au moment exact où vous l'avez exécuté lorsque le problème s'est produit. Mais j'espère que la réponse est ce que vous cherchez.

1
répondu Rap 2009-09-05 22:42:36

Si le script a été édité dans Windows, ou tout autre système d'exploitation avec des fins de ligne "natives" différentes, il pourrait être aussi simple qu'un CR(^M) "masquage" à la fin de la première ligne. Vi amélioré peut être configuré pour hide {[3] } cette fin de ligne non native. Dans mon cas, j'ai simplement re-tapé la première ligne incriminée dans VI et l'erreur a disparu.

0
répondu Linux User 2012-09-30 21:22:21