GNU/Linux >> Linux Esercitazione >  >> Linux

Che cosa fa "exec [e-mail protetta]"?

Il "[email protected]" bit si espanderà all'elenco dei parametri posizionali (solitamente gli argomenti della riga di comando), citati singolarmente per evitare la suddivisione delle parole e la generazione del nome file ("globbing").

L'exec sostituirà il processo corrente con il processo risultante dall'esecuzione del suo argomento.

In breve, exec "[email protected]" eseguirà il comando dato dai parametri della riga di comando in modo tale che il processo corrente venga sostituito da esso (se exec è in grado di eseguire il comando).


Altre due risposte spiegano cosa exec "[email protected]" fa. Questa risposta su Stack Overflow spiega perché è importante per Docker e, come supponi, ha a che fare con i segnali:

Questo è importante in Docker affinché i segnali vengano inoltrati correttamente. Ad esempio, se Redis è stato avviato senza exec , non riceverà un SIGTERM su docker stop e non avrà la possibilità di spegnersi in modo pulito. In alcuni casi, ciò può portare alla perdita di dati o a processi zombi.

Se avvii processi figli (cioè non usare exec ), il processo padre diventa responsabile della gestione e dell'inoltro dei segnali come appropriato. Questo è uno dei motivi per cui è meglio usare supervisord o simile quando si eseguono più processi in un contenitore, poiché inoltrerà i segnali in modo appropriato.


"[email protected]" nelle shell tipo Bourne, nei contesti elenco si espande a tutti i parametri posizionali come argomenti separati.

In uno script, inizialmente, i parametri posizionali sono gli argomenti che lo script stesso ha ricevuto.

exec è eseguire un comando nello stesso processo della shell. Questo è l'ultimo comando che verrà eseguito da uno script, perché in seguito il processo eseguirà un comando diverso dalla shell.

Quindi, se il tuo script è

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

E chiami il tuo script usando una riga di comando della shell come:

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

Chiamerà exec con echo , some test e x y come argomenti che eseguiranno echo (nella maggior parte dei file sh implementazioni, /bin/echo al contrario del echo shell integrato) nello stesso processo che in precedenza eseguiva la shell interpretando il tuo script con some test e x y come argomenti.


Linux
  1. Cosa fa Exec 3?

  2. Cosa fa . ~/.bashrc Comando Fare??

  3. Che cosa restituisce il comando Ls -al .*?

  4. Cosa significa il valore del simbolo dal comando nm?

  5. Che cosa significa [e-mail protetta] in uno script di shell?

Comando file Linux:cosa fa e come usarlo

ExplainShell:scopri cosa fa ogni parte di un comando Linux

Cosa fa sudo apt-get update

Cosa significa Cat Command in Linux?

Cosa fa il comando Startx?

Cosa fa -e in un bash shebang?