Saltar al contenido

¿Qué significa `exec ” [email protected] “` hacer?

Después de de nuestra extensa compilación de datos dimos con la solución esta contratiempo que presentan algunos los usuarios. Te brindamos la respuesta y deseamos que te resulte de mucha ayuda.

Solución:

los "[email protected]" bit se expandirá a la lista de parámetros posicionales (generalmente los argumentos de la línea de comando), citados individualmente para evitar la división de palabras y la generación de nombres de archivo (“globbing”).

los exec reemplazará el proceso actual con el proceso resultante de ejecutar su argumento.

En breve, exec "[email protected]" ejecutará el comando dado por los parámetros de la línea de comando de tal manera que el proceso actual sea reemplazado por él (si el exec es capaz de ejecutar el comando).

Otras dos respuestas explican qué exec "[email protected]" lo hace. Esta respuesta en Stack Overflow explica por qué es importante para Docker y, como supones, tiene que ver con las señales:

Esto es importante en Docker para que las señales se transmitan correctamente. Por ejemplo, si Redis se inició sin execno recibirá un SIGTERM al docker stop y no tendrá la oportunidad de apagarse limpiamente. En algunos casos, esto puede provocar la pérdida de datos o procesos zombis.

Si inicia procesos secundarios (es decir, no utiliza exec), el proceso principal se vuelve responsable de manejar y reenviar señales según corresponda. Esta es una de las razones por las que es mejor usar supervisord o similar cuando se ejecutan múltiples procesos en un contenedor, ya que reenviará las señales de manera adecuada.

"[email protected]" en shells tipo Bourne, en contextos de lista se expande a todos los parámetros posicionales como argumentos separados.

En un script, inicialmente, los parámetros posicionales son los argumentos que recibió el propio script.

exec es ejecutar un comando en el mismo proceso que el shell. Ese es el último comando que ejecutará un script porque después de eso, el proceso ejecutará otro comando además del shell.

Entonces, si su guión es

#! /bin/sh -
exec "[email protected]"

Y llamas a tu script usando una línea de comando de shell como:

/path/to/your-script 'echo' "some  test" 'x y'

llamará exec con echo, some testy x y como argumentos que se ejecutarán echo (en la mayoría sh implementaciones, /bin/echo a diferencia de la echo shell incorporado) en el mismo proceso que anteriormente estaba ejecutando el shell interpretando su secuencia de comandos con some test y x y como argumentos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *