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
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?
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.
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
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:
- 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). - 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. - 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.
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.
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 )
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.
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