GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué hace `exec [email protected]`?

El "[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").

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

En resumen, 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 exec , no recibirá un SIGTERM sobre 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 usa 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 apropiada.


"[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 script 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á a exec con echo , some test y x y como argumentos que ejecutarán echo (en la mayoría sh implementaciones, /bin/echo a diferencia del echo shell incorporado) en el mismo proceso que anteriormente estaba ejecutando el shell interpretando su script con some test y x y como argumentos.


Linux
  1. Cómo averiguar qué hace un comando de Linux

  2. Que hace ?

  3. ¿Qué hace Exec 3?

  4. ¿Qué devuelve el comando Ls -al .*?

  5. ¿Qué significa el valor del símbolo del comando nm?

Comando de archivo de Linux:qué hace y cómo usarlo

ExpliqueShell:encuentre lo que hace cada parte de un comando de Linux

¿Qué hace sudo apt-get update?

¿Qué significa el comando Cat en Linux?

¿Qué hace el comando Startx?

¿Qué significa la sintaxis |&en lenguaje shell?