GNU/Linux >> Linux Esercitazione >  >> Linux

Correggi "Errore di formato Exec" durante l'esecuzione di script con il comando run-parts

Quando stavo cercando di eseguire tutti gli script in una directory utilizzando il comando run-parts, ho riscontrato un errore - "run-parts:non è stato possibile eseguire script.sh:errore di formato Exec" . Gli script hanno funzionato perfettamente quando li eseguo direttamente come "./script.sh" e "sh script.sh". Ma non hanno funzionato quando li ho eseguiti con il comando run-parts. Per coloro che si chiedono, il comando run-parts eseguirà tutti gli script in una directory. Se si verifica un errore come questo durante l'esecuzione di uno script, questo suggerimento rapido ti aiuterà a correggere "Errore di formato Exec" durante l'esecuzione di script con il comando run-parts in Linux.

Correzione "Errore di formato Exec" durante l'esecuzione di script con il comando run-parts

Per eseguire tutti gli script nella cartella Documenti, ho eseguito:

$ run-parts --regex '^s.*\.sh

Ho ricevuto il seguente messaggio di errore:

run-parts: failed to exec Documents/script1.sh: Exec format error
run-parts: Documents/script1.sh exited with return code 1
run-parts: failed to exec Documents/script2.sh: Exec format error
run-parts: Documents/script2.sh exited with return code 1
run-parts: failed to exec Documents/script3.sh: Exec format error
run-parts: Documents/script3.sh exited with return code 1
run-parts: failed to exec Documents/script4.sh: Exec format error
run-parts: Documents/script4.sh exited with return code 1

run-parts:impossibile eseguire script.sh:errore di formato Exec

Per correggere "Errore di formato Exec", devi aggiungere un shebang all'inizio dei tuoi script in modo che il kernel sappia come eseguirli. Per chi se lo chiedesse, uno shebang è la sequenza di caratteri composta dai caratteri segno numerico e punto esclamativo (#! ) all'inizio di uno script. Quando aggiungi lo shebang all'inizio di un file di testo, viene interpretato come un file eseguibile.

La maggior parte degli script inizia con uno shebang. Ecco alcuni tipici esempi di shebang.

Guscio Bourne o una shell compatibile:

#!/bin/sh

Bash:

#!/bin/bash

Perl:

#!/usr/bin/perl

Python 2.x:

#!/usr/bin/python

Python 3.x:

#!/usr/bin/python3

Questo è ciò che chiamiamo shebang.

Ora, torniamo all'argomento. Modifica i tuoi script utilizzando il tuo editor preferito:

$ nano Documents/ostechnix.sh

Aggiungi il seguente shebang all'inizio dello script:

#!/bin/sh

Risolto "Errore di formato Exec" durante l'esecuzione di script con parti di esecuzione

Ora puoi eseguire gli script con il comando run-parts senza problemi utilizzando il comando run-parts.

Aggiornamento:

Come uno dei nostri lettori Mr.Danesh menzionato nella sezione commenti qui sotto, invece di codificare il percorso dell'interprete, ad es.

#!/usr/bin/python3

Possiamo usare:

#!/usr/bin/env python3

Questo è più portatile nel caso in cui l'interprete sia installato in un'altra directory (non predefinita). ambiente è un comando di shell per sistemi operativi simili a Linux e Unix. Viene spesso utilizzato dagli script di shell per avviare l'interprete corretto.

Puoi anche utilizzare ShellCheck utility per trovare problemi negli script della shell.

  • ShellCheck:un'utilità gratuita per trovare bug negli script della shell
ScaricaGuida gratuita:"Guida avanzata agli script Bash"

Spero che questo aiuti.


Linux
  1. Best practice per l'esecuzione di Node.js con la porta 80 (Ubuntu/Linode)

  2. Errore durante l'utilizzo dell'helper delle credenziali Git con gnome-keyring come Sudo

  3. Cronologia dei comandi di Linux con data e ora

  4. standard_init_linux.go:178:il processo utente exec ha causato un errore di formato exec

  5. perché ricevo un errore di formato Exec quando scrivo il mio servizio Linux?

Come correggere l'errore di conversione con Calibre

Undistract-me:ricevi una notifica quando vengono completati i comandi del terminale di lunga durata

Risolto l'errore, impossibile trovare il comando hwmatch su Grub

Metti un timer sui tuoi comandi in esecuzione con il comando di timeout in Linux

Comando Linux exec con esempi

errore:comando 'gcc' non riuscito con stato di uscita 1 su CentOS