2012-06-12 21:26:53 +0000 2012-06-12 21:26:53 +0000
88
88

Come posso risolvere l'errore "non riesco a eseguire il file binario"?

Quando faccio il login con SSH, tutto quello che posso vedere è questo…

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

Non ho potuto fare nulla qui dentro. Comandi come halt, poweroff, reboot, command not found restituiranno &007.

Come posso risolvere questo problema? Sto usando Debian Squeeze Linux

Risposte (7)

92
92
92
2012-06-13 03:07:20 +0000

Di solito questo messaggio di errore significa che Linux non riconosce il file come script di shell o come file eseguibile.

Di solito la causa è l'esecuzione di un eseguibile sull'architettura sbagliata - se si tenta di eseguire gli eseguibili x86 su una CPU ARM, questo messaggio viene fuori.

Il file /usr/bin/id è stato sovrascritto, forse?

26
26
26
2012-06-13 01:27:14 +0000

Provate ad eseguirlo usando ./executablefilename invece di usare sh executablefilename. Dopotutto non è uno script di shell.

9
9
9
2015-06-19 11:55:00 +0000

Il problema è l'esecuzione di un binario per un'architettura di processore diversa. Si può usare objdump (da binutils) per controllare l'architettura dei binari. Si può usare uname per controllare l'architettura di una macchina.

ad es. ho incontrato questo errore “cannot execute binary file” quando ho installato FF.Communicator - un plugin firefox per chrome (così posso eseguire pagine che usano applet java).

  • objdump mostra che il binario è a 64 bit elf64-x86-64
  • uname mostra che la mia macchina è a 32 bit i686

  • objdump su un binario funzionante sulla mia macchina mostra che è a 32 bit elf32-i386

Utilizzando questi strumenti è possibile controllare le architetture delle macchine e dei binari - non solo le architetture intel ma qualsiasi processore.

Per gli utenti di Mac OSX, si possono trovare le informazioni sull'architettura di un file specifico usando il comando “file”:

$ file filename_here
6
6
6
2012-06-12 21:51:34 +0000

Sto tirando a indovinare, ma sembra che stia succedendo quanto segue:

  1. Si accede su SSH, attivando bash per far funzionare il vostro ~/.profile o ~/.bashrc per impostare il vostro ambiente per voi (questo è normale).
  2. Ad un certo punto si cerca di eseguire /bin/id per ottenere il vostro uid, che fallisce, causando un errore di espressione intero, e terminando lo script prima che possa impostare il vostro $PATH.
  3. Si cerca di eseguire $PATH per ottenere il vostro uid, che fallisce, causando un errore di espressione intero, e terminando lo script prima che possa impostare il vostro export PATH=/bin:/usr/bin:/sbin:/usr/sbin.
  4. Si cerca di eseguire $PATH per ottenere il vostro uid, che fallisce, causando un errore di espressione intero, e terminando lo script prima che possa impostare il vostro &007.
  5. Si cerca di eseguire &007 per eseguire &007. Poiché il vostro &007 non è impostato, bash è in grado di eseguire solo comandi con il percorso completo specificato.

Usate &007 per risolvere il problema &007 fino a quando non riuscite a risolvere la causa principale del fallimento di /bin/id.

0
0
0
2018-10-24 14:01:42 +0000

Ciò significa che si sta cercando di eseguire un file binario utilizzando il proprio script bash che non è destinato ad essere eseguito come si sta provando. Si tratta già di un file binario e si sta cercando di analizzare ed eseguire $SHELL.

in un esempio molto semplice, se si tenta di eseguire il comando `w’ come

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

in modo simile si potrebbe colpire lo stesso metodo o come sembra dal proprio frammento di codice.

Mentre, per il resto per i vostri comandi, Al questi comandi halt, shutdown , reboot etc sono i comandi di proprietà della root e hanno bisogno di prilveges super-utente per eseguire ed eseguire l'operazione richiesta. gli utenti normali non possono eseguirli un'altra spiegazione è che questi comandi sono posti a /sbin/ e /usr/sbin , che potrebbe non essere nella vostra variabile $PATH (che viene utilizzata per convalidare i comandi in vostra custodia)

0
0
0
2012-06-12 22:29:57 +0000

Il file binario è costituito da istruzioni della macchina che il processore è in grado di comprendere. Il sistema operativo non significa che lo stesso eseguibile verrà eseguito. spostarsi avanti e indietro tra il set di istruzioni del processore con cui è compatibile di solito funziona bene, se non sono compatibili CPU non sarà in grado di capire le istruzioni.

-1
-1
-1
2018-07-25 08:43:45 +0000

Si sta eseguendo la versione sbagliata del programma di installazione, per esempio, macchina a 64 bit e si sta cercando di installare la versione a 32 bit del programma di installazione.