GNU/Linux >> Tutoriels Linux >  >> Linux

Correction de "l'erreur de format Exec" lors de l'exécution de scripts avec la commande run-parts

Lorsque j'essayais d'exécuter tous les scripts d'un répertoire en utilisant la commande run-parts, j'ai rencontré une erreur - "run-parts:failed to exec script.sh:Exec format error" . Les scripts fonctionnaient très bien lorsque je les exécutais directement comme "./script.sh" et "sh script.sh". Mais ils n'ont pas fonctionné lorsque je les ai exécutés avec la commande run-parts. Pour ceux qui se demandent, la commande run-parts exécutera tous les scripts dans un répertoire. Si vous avez une erreur comme celle-ci lors de l'exécution d'un script, cette astuce rapide vous aidera à corriger "l'erreur de format Exec" lors de l'exécution de scripts avec la commande run-parts sous Linux.

Correction "Erreur de format Exec" lors de l'exécution de scripts avec la commande run-parts

Pour exécuter tous les scripts du dossier Documents, j'ai exécuté :

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

J'ai le message d'erreur suivant :

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 :échec de l'exécution du script.sh :erreur de format d'exécution

Pour corriger "Erreur de format Exec", vous devez ajouter un shebang au début de vos scripts afin que le noyau sache comment les exécuter. Pour ceux qui se demandent, un shebang est la séquence de caractères composée des caractères dièse et point d'exclamation (# ! ) au début d'un script. Lorsque vous ajoutez le shebang au début d'un fichier texte, il est interprété comme un fichier exécutable.

La plupart des scripts commencent par un shebang. Voici quelques exemples typiques de shebang.

Coquillage Bourne , ou un shell compatible :

#!/bin/sh

Bas :

#!/bin/bash

Perl :

#!/usr/bin/perl

Python 2.x :

#!/usr/bin/python

Python 3.x :

#!/usr/bin/python3

C'est ce qu'on appelle un shebang.

Maintenant, revenons au sujet. Modifiez vos scripts à l'aide de votre éditeur préféré :

$ nano Documents/ostechnix.sh

Ajoutez le shebang suivant au début du script :

#!/bin/sh

Correction "Erreur de format Exec" lors de l'exécution de scripts avec run-parts

Vous pouvez maintenant exécuter les scripts avec la commande run-parts sans aucun problème en utilisant la commande run-parts.

Mise à jour :

En tant que l'un de nos lecteurs Mr.Danesh mentionné dans la section des commentaires ci-dessous, au lieu de coder en dur le chemin de l'interpréteur, par exemple

#!/usr/bin/python3

Nous pouvons utiliser :

#!/usr/bin/env python3

C'est plus portable au cas où l'interpréteur est installé dans un autre répertoire (non par défaut). env est une commande shell pour les systèmes d'exploitation de type Linux et Unix. Il est souvent utilisé par les scripts shell pour lancer le bon interpréteur.

Vous pouvez également utiliser ShellCheck utilitaire pour trouver des problèmes dans vos scripts shell.

  • ShellCheck – Un utilitaire gratuit pour trouver des bogues dans vos scripts shell
TéléchargerGuide gratuit :"Guide de script avancé pour Bash"

J'espère que cela vous aidera.


Linux
  1. Utilisation de l'entrée-sortie et de la redirection d'erreur sous Linux

  2. Fix FirewallD n'exécute pas l'erreur sur Linux Mint 12

  3. Comment corriger une erreur de commande introuvable sous Linux

  4. [OpenStack-Devstack] :Erreur :le service n-net ne s'exécute pas lors de l'exécution de stack.sh

  5. Meilleures pratiques lors de l'exécution de Node.js avec le port 80 (Ubuntu / Linode)

Comment réparer une erreur de conversion avec Calibre

Undistract-me :recevez une notification lorsque les commandes de terminal de longue durée sont terminées

Corrigez l'erreur impossible de trouver la commande hwmatch sur Grub

Mettez une minuterie sur vos commandes en cours d'exécution avec la commande Timeout sous Linux

Comment réparer l'erreur de connexion refusée wget lorsque je suis derrière un proxy

Commande Linux exec avec exemples