GNU/Linux >> Znalost Linux >  >> Linux

Oprava „chyby formátu Exec“ při spouštění skriptů pomocí příkazu run-parts

Když jsem se snažil spustit všechny skripty v adresáři pomocí příkazu run-parts jsem narazil na chybu - "run-parts:failed to exec script.sh:Exec format error" . Skripty fungovaly dobře, když jsem je přímo spouštěl jako "./script.sh" a "sh script.sh". Ale nefungovaly, když jsem je spustil příkazem run-parts. Pro ty, kdo by byli zvědaví, příkaz run-parts spustí všechny skripty v adresáři. Pokud se při spouštění skriptu vyskytne taková chyba, tento rychlý tip vám pomůže opravit „chybu formátu Exec“ při spouštění skriptů s příkazem run-parts v Linuxu.

Oprava „chyby formátu Exec“ při spouštění skriptů pomocí příkazu run-parts

Pro spuštění všech skriptů ve složce Dokumenty jsem spustil:

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

Zobrazila se mi následující chybová zpráva:

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:nepodařilo se spustit skript.sh:Chyba formátu Exec

Chcete-li opravit „chybu formátu Exec“, musíte přidat shebang na začátku vašich skriptů, takže jádro bude vědět, jak je spustit. Pro ty, kdo by se zajímali, je shebang posloupnost znaků skládající se ze znaků znak čísla a vykřičník (#! ) na začátku skriptu. Když přidáte shebang na začátek textového souboru, bude interpretován jako spustitelný soubor.

Většina skriptů začíná znakem Shebang. Zde je několik typických příkladů shebang.

Bourne shell , nebo kompatibilní shell:

#!/bin/sh

Bash:

#!/bin/bash

Perl:

#!/usr/bin/perl

Python 2.x:

#!/usr/bin/python

Python 3.x:

#!/usr/bin/python3

Tomu říkáme shebang.

Nyní se vraťme k tématu. Upravte své skripty pomocí svého oblíbeného editoru:

$ nano Documents/ostechnix.sh

Na začátek skriptu přidejte následující shebang:

#!/bin/sh

Oprava „Chyba formátu Exec“ při spouštění skriptů s run-parts

Nyní můžete být schopni spouštět skripty pomocí příkazu run-parts bez jakýchkoli problémů pomocí příkazu run-parts.

Aktualizace:

Jako jeden z našich čtenářů pan Danesh zmíněno v sekci komentářů níže, Místo pevného kódování cesty tlumočníka, např.

#!/usr/bin/python3

Můžeme použít:

#!/usr/bin/env python3

Toto je více přenosné v případě, že je interpret nainstalován v nějakém jiném (nevýchozím) adresáři. env je příkaz shellu pro Linux a operační systémy podobné Unixu. Často jej používají skripty shellu ke spuštění správného interpretu.

Můžete také použít ShellCheck nástroj k nalezení problémů ve skriptech shellu.

  • ShellCheck – bezplatný nástroj k nalezení chyb ve skriptech Shell
StáhnoutBezplatný průvodce:„Pokročilý průvodce skriptováním Bash“

Doufám, že to pomůže.


Linux
  1. Opravit chybu FirewallD neběží na Linux Mint 12

  2. Jak opravit chybu Příkaz nenalezen v Linuxu

  3. chyba:příkaz 'gcc' selhal se stavem ukončení 1 na CentOS

  1. Chyba při použití pomocníka pověření Git se svazkem klíčů gnome jako Sudo

  2. Historie příkazů Linuxu s datem a časem

  3. proč se mi při psaní linuxové služby zobrazuje chyba formátu Exec?

  1. Práce s Input Output a přesměrováním chyb v Linuxu

  2. Navrhněte instalaci balíčků při spuštění nedostupného příkazu

  3. [OpenStack-Devstack]:Chyba:Služba n-net neběží při provádění stack.sh