GNU/Linux >> Tutoriales Linux >  >> Linux

Solucione el "error de formato Exec" al ejecutar scripts con el comando run-parts

Cuando intentaba ejecutar todos los scripts en un directorio usando el comando run-parts, me encontré con un error:"run-parts:error al ejecutar script.sh:error de formato Exec" . Los scripts funcionaron bien cuando los ejecuté directamente como "./script.sh" y "sh script.sh". Pero no funcionaron cuando los ejecuté con el comando run-parts. Para aquellos que se preguntan, el comando run-parts ejecutará todos los scripts en un directorio. Si recibió un error como este mientras ejecutaba un script, este consejo rápido lo ayudará a corregir el "Error de formato Exec" al ejecutar scripts con el comando run-parts en Linux.

Reparar "Error de formato Exec" al ejecutar secuencias de comandos con el comando run-parts

Para ejecutar todos los scripts en la carpeta Documentos, ejecuté:

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

Recibí el siguiente mensaje de error:

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:error al ejecutar script.sh:error de formato Exec

Para corregir el "Error de formato Exec", debe agregar un shebang al comienzo de sus scripts para que el núcleo sepa cómo ejecutarlos. Para aquellos que se preguntan, un shebang es la secuencia de caracteres que consta de los caracteres signo de número y signo de exclamación (#! ) al comienzo de un guión. Cuando agrega el shebang al comienzo de un archivo de texto, se interpreta como un archivo ejecutable.

La mayoría de los guiones comienzan con un tinglado. Estos son algunos ejemplos típicos de shebang.

Concha de Bourne , o un shell compatible:

#!/bin/sh

Golpe:

#!/bin/bash

Perl:

#!/usr/bin/perl

Python 2.x:

#!/usr/bin/python

Python 3.x:

#!/usr/bin/python3

Esto es lo que llamamos un tinglado.

Ahora, volvamos al tema. Edite sus guiones con su editor favorito:

$ nano Documents/ostechnix.sh

Agregue el siguiente shebang al principio del guión:

#!/bin/sh

Solucione el "error de formato Exec" al ejecutar secuencias de comandos con partes de ejecución

Ahora puede ejecutar los scripts con el comando run-parts sin ningún problema usando el comando run-parts.

Actualización:

Como uno de nuestros lectores Mr.Danesh mencionado en la sección de comentarios a continuación, en lugar de codificar la ruta del intérprete, por ejemplo,

#!/usr/bin/python3

Podemos usar:

#!/usr/bin/env python3

Esto es más portátil en caso de que el intérprete esté instalado en algún otro directorio (no predeterminado). env es un comando de shell para sistemas operativos Linux y similares a Unix. Los scripts de shell suelen utilizarlo para iniciar el intérprete correcto.

También puede usar ShellCheck utilidad para encontrar problemas en sus scripts de shell.

  • ShellCheck:una utilidad gratuita para encontrar errores en sus scripts de Shell
DescargarGuía gratuita:“Guía avanzada de Bash-Scripting”

Espero que esto ayude.


Linux
  1. Sugerir la instalación de paquetes al ejecutar un comando no disponible

  2. Cómo corregir un error de Comando no encontrado en Linux

  3. [OpenStack-Devstack]:Error:el servicio n-net no se está ejecutando al ejecutar stack.sh

  4. ¿Está ejecutando un ejecutable en la ruta con el mismo nombre que una función existente?

  5. Shell Script Wrapper para evitar la ejecución de comandos sin argumentos?

Cómo corregir el error de conversión con Calibre

Reparar FirewallD no está ejecutando un error en Linux Mint 12

Undistract-me:Reciba una notificación cuando se completen los comandos de terminal de ejecución prolongada

Solucione el error que no puede encontrar el comando hwmatch en Grub

Ponga un temporizador en sus comandos en ejecución con el comando de tiempo de espera en Linux

Comando exec de Linux con ejemplos