Wie kann ich den Fehler "Binärdatei kann nicht ausgeführt werden"beheben?

Wenn ich mich mit SSH anmelde, kann ich nur Folgendes sehen...

-bash: /usr/bin/id: cannot execute binary file
-bash: [: : integer expression expected

Ich konnte hier drin nichts tun. Befehle wie halt, poweroff, reboot gibt command not found zurück.

Wie kann ich das beheben? Ich benutze Debian Squeeze Linux

Author: Der Hochstapler, 2012-06-12

7 answers

Normalerweise bedeutet diese Fehlermeldung, dass Linux die Datei nicht als Shell-Skript oder als ausführbare Datei erkennt.

Normalerweise wird eine ausführbare Datei auf der falschen Architektur ausgeführt-wenn Sie versuchen, x86-ausführbare Dateien auf einer ARM-CPU auszuführen, wird diese Meldung angezeigt.

Wurde /usr/bin/id möglicherweise überschrieben?

 103
Author: LawrenceC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-06-13 03:07:20

Versuche es mit auszuführen ./ executablefilename anstelle von sh executablefilename. Es ist schließlich kein Shell-Skript.

 32
Author: RidDeBakTiYar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-06-13 01:27:14

Das Problem besteht darin, eine Binärdatei für eine andere Prozessorarchitektur auszuführen. Sie können objdump (von binutils) verwenden, um die Architektur von Binärdateien zu überprüfen. Sie können uname verwenden, um die Architektur einer Maschine zu überprüfen.

ZB bin ich bei der Installation von FF auf den Fehler "Binärdatei kann nicht ausgeführt werden" gestoßen.Communicator - ein Firefox-Plugin für Chrome (damit ich Seiten ausführen kann, die Java-Applets verwenden).

  • objdump zeigt an, dass die Binärdatei 64-Bit ist elf64-x86-64
  • Uname zeigt an, dass mein Computer 32-Bit ist i686

    $ ./FF.Communicator bash: ./FF.Communicator: Binärdatei kann nicht ausgeführt werden $ uname -mpio i686 i686 i386 GNU/Linux $ objdump -ein ./FF.Communicator ./FF.Kommunikator: Dateiformat elf64-x86-64 ./FF.Communicator -

  • Objdump auf einer funktionierenden Binärdatei auf meinem Computer zeigt, dass es 32-Bit ist elf32-i386

    $ objdump -ein /bin/ls /bin / ls: Dateiformat elf32-i386 -

Mit diesen Tools können Sie Architekturen von Maschinen und Binärdateien überprüfen-nicht nur Intel-Architekturen, sondern jeden Prozessor.

Für Mac OSX-Benutzer können Sie die Architekturinformationen einer bestimmten Datei mit dem Befehl "Datei" ermitteln:

$ file filename_here
 11
Author: gaoithe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-01-14 16:59:53

Ich mache hier einige wilde Vermutungen, aber es sieht so aus, als würde Folgendes passieren:

  1. Sie melden sich über SSH an und lösen bash aus, um Ihre ~/.profile oder ~/.bashrc auszuführen, um Ihre Umgebung für Sie einzurichten (dies ist normal).
  2. Irgendwann versucht es, /bin/id auszuführen, um Ihre UID abzurufen, was fehlschlägt, einen ganzzahligen Ausdrucksfehler verursacht und das Skript beendet, bevor es Ihr $PATH einrichten kann.
  3. Da Ihr $PATH nicht gesetzt ist, kann bash nur Befehle mit dem vollständigen Pfad ausführen angegebenen.

Verwenden Sie export PATH=/bin:/usr/bin:/sbin:/usr/sbin, um das Problem $PATH zu beheben, bis Sie die Ursache für /bin/id fehlschlagen beheben können.

 7
Author: Darth Android,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-06-12 21:51:34

Die Binärdatei

Besteht aus Maschinenanweisungen, die der Prozessor verstehen kann. Ihr Betriebssystem bedeutet nicht, dass dieselbe ausführbare Datei ausgeführt wird. bewegen Sie hin und her zwischen dem Prozessor Befehlssatz kompatibel mit wird in der Regel gut funktionieren, wenn sie nicht kompatibel CPU sind nicht in der Lage, Anweisungen zu verstehen.

 0
Author: acoh Facha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-06-12 22:29:57

Dies bedeutet, dass Sie versuchen, eine Binärdatei mit Ihrem Bash-Skript auszuführen, das nicht so ausgeführt werden soll, wie Sie es versuchen. Es ist bereits eine Binärdatei und Sie versuchen, Ihre $SHELL zu analysieren und auszuführen.

In einem sehr einfachen Beispiel, wenn Sie versuchen, den Befehl `w' wie

$ bash w
/usr/bin/w: /usr/bin/w: cannot execute binary file

Ähnlich könnten Sie die gleiche Methode treffen oder wie es von Ihrem Code-Snippet aussieht.

Während , für die verbleibenden für Ihre Befehle, Al diese halt, Herunterfahren, Neustart usw befehle sind die Root-eigenen Befehle und benötigen Super-User-Prilveges, um den erforderlichen Vorgang auszuführen und auszuführen. normale Benutzer können sie nicht ausführen eine andere Erklärung ist , dass diese Befehle unter /sbin/ und /usr/sbin platziert werden, die sich möglicherweise nicht in Ihrer Variablen $PATH befinden ( die zum Validieren von Befehlen in Ihrer Datenbank verwendet wird )

 0
Author: Nasir Mahmood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-10-24 14:01:42

Sie führen eine falsche Version des Installationsprogramms aus, z. B. einen 64-Bit-Computer, und versuchen, eine 32-Bit-Version des Installationsprogramms zu installieren.

 -1
Author: kwai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-07-25 08:43:45