it-swarm.com.de

/ usr/bin/Perl: falscher Interpreter: Textdatei ausgelastet

Dies ist eine neue für mich: Was bedeutet dieser Fehler?

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

Zu dieser Zeit wurden einige festplattenintensive Prozesse ausgeführt, aber ich habe diese Meldung noch nie zuvor gesehen - tatsächlich ist dies das erste Mal, dass ich beim Versuch, ein Perl-Skript auszuführen, eine Fehlermeldung erhalte. Nach ein paar Sekunden des Wartens konnte ich es ausführen und habe das Problem seitdem nicht mehr gesehen, aber es wäre schön, eine Erklärung dafür zu haben.

Unter Ubuntu 9.04 ist das Dateisystem ext3.

27
chris

Ich vermute, Sie sind auf dieses Problem gestoßen.

Der Linux-Kernel generiert einen bad interpreter: Text file busy-Fehler, wenn Ihr Perl-Skript (oder eine andere Art von Skript) zum Schreiben geöffnet ist, wenn Sie versuchen, es auszuführen.

Sie sagen nicht, was die festplattenintensiven Prozesse getan haben. Ist es möglich, dass eines von ihnen das Skript für Lese- und Schreibzugriff geöffnet hatte (auch wenn es eigentlich nichts schrieb)?

21
cjm

Dies geschieht, weil die Skriptdatei zum Schreiben geöffnet ist, möglicherweise durch einen nicht abgebrochenen Schurkenprozess.

Lösung: Überprüfen Sie, welcher Prozess noch auf die Datei zugreift, und beenden Sie sie.

Z.B:

# /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

Führen Sie lsof (Befehl list open files) für den Skriptnamen aus:

# lsof | grep updater.pl
sftp-serv 4416            root    3r      REG            144,103    11043   33046751 /root/wordpress_plugin_updater/updater.pl

Beenden Sie den Prozess anhand der PID:

kill -9 4416

Führen Sie das Skript jetzt erneut aus. Es funktioniert jetzt.

# /root/wordpress_plugin_updater/updater.pl --wp-path=/www/htdocs
Wordpress Plugin Updater script v3.0.1.0.
Processing 24 plugins from
5
Joel G Mathew

Wenn Sie gnu parallel verwenden und dieser Fehler angezeigt wird, kann dies daran liegen, dass Sie eine Datei von dem Ort streamen, an dem Sie die Datei ausgeben ...

2
OwenRackham

Dies hat immer damit zu tun, dass auf den Perl-Interpreter (/ usr/bin/Perl) nicht zugegriffen werden kann. Tatsächlich passiert es, wenn ein Shell-Skript ausgeführt wird oder awk oder was auch immer auf dem # steht! Zeile oben im Skript.

Die Ursache können viele Dinge sein ... Dauerwellen, gesperrte Dateien, Dateisysteme offline und weiter und weiter.

Dies hängt natürlich davon ab, was genau zu dem Zeitpunkt passierte, als das Problem auftrat. Aber ich hoffe, die Antwort ist das, wonach Sie gesucht haben.

1
Rap

Wenn das Skript in Windows oder einem anderen Betriebssystem mit anderen "nativen" Zeilenenden bearbeitet wurde, kann es so einfach sein, dass CR(^M) am Ende der ersten Zeile "versteckt" wird. Vi verbessert kann auf hide dieses nicht native Zeilenende eingestellt werden. In meinem Fall habe ich einfach die fehlerhafte erste Zeile in VI erneut eingegeben und der Fehler ist verschwunden.

0
Linux User