GNU/Linux >> Linux Esercitazione >  >> Linux

Comando Linux exec con esempi

Introduzione

Il exec di Linux command esegue un comando Shell senza creare un nuovo processo. Sostituisce invece l'operazione Shell attualmente aperta. A seconda dell'utilizzo del comando, exec ha comportamenti e casi d'uso diversi.

Questo articolo mostra come utilizzare il exec comando in Linux.

Prerequisiti

  • Accesso alla riga di comando/terminale come sudo.
  • Comprensione di base dei comandi del terminale Linux (usa il nostro cheat sheet dei comandi Linux).
  • Un editor di testo Linux come nano.

Sintassi del comando Linux exec

Il exec la sintassi del comando è:

exec [options] [command [arguments]] [redirection]

Il comando si comporta in modo diverso a seconda del numero di argomenti:

  • Se è presente un argomento, il exec comando sostituisce la shell corrente con il programma eseguito. In uno script Bash, ogni comando successivo non viene eseguito .
  • Se non è presente alcun argomento di comando, tutti i reindirizzamenti si verificano nella shell corrente.

Il exec comando non ritorna mai al processo originale a meno che non si verifichi un errore o il comando venga eseguito in una subshell.

Opzioni comando Linux exec

Di seguito è riportata una breve spiegazione di tutti i exec opzioni:

Opzione Descrizione
-c Esegue il comando in un ambiente vuoto.
-l Passa un trattino (- ) come argomento zero.
-a [name] Passa un [name] come argomento zero.

Continua a leggere per vedere come exec funziona attraverso esempi.

Esempi di comando Linux exec

Gli esempi seguenti mostrano il comportamento del exec comando nel terminale e tramite gli script Bash.

Utilizzo di base (sostituzione del processo)

Per vedere come exec funziona, procedi come segue:

1. Apri il terminale ed elenca i processi in esecuzione:

ps

L'output mostra la shell Bash attualmente in esecuzione e il ps comando. La shell Bash ha un PID univoco.

2. Per confermare, controllare l'ID del processo corrente con:

echo $$

Il PID è lo stesso dell'output di ps comando, indicando che questo è il processo Bash attualmente in esecuzione.

3. Ora esegui exec e passa il comando sleep per cento secondi:

exec sleep 100

Il sleep il comando attende 100 secondi.

4. In un'altra scheda del terminale, elenca tutti i processi attualmente in esecuzione e grep il sleep comando:

ps -ae | grep sleep

Il PID per il processo è lo stesso del PID della shell Bash, che indica il exec comando ha sostituito il processo della shell Bash.

La sessione Bash (scheda terminale) si chiude quando i cento secondi sono terminati e il processo termina.

Sostituisci la sessione Shell corrente

Usa il exec comando per sostituire la sessione della shell corrente:

1. Controlla il PID della shell corrente:

echo $$

2. Usa exec per passare alla Bourne Shell:

exec sh

3. In un'altra scheda, controlla il PID per il processo Bourne Shell:

ps -ae | grep "\bsh\b"

Nota: Il \b in grep è Regex per la corrispondenza del limite di parole, consentendo una corrispondenza esatta di sh nell'uscita. Scopri di più nel nostro tutorial su Grep Regex.

Il comando sostituisce il processo Bash. L'uscita da Bourne Shell esce completamente dalla sessione del terminale.

Programma chiama con exec negli script Bash

Per vedere come exec funziona negli script Bash, procedi come segue:

1. Apri un editor di testo, come Nano, e crea un file di script:

nano [script name]

2. Incolla il seguente codice:

#!/bin/bash

while true
do
        echo "1. Update "
        echo "2. Upgrade "
        echo "3. Exit"
   read Input
   case "$Input" in
        1) exec sudo apt update ;;
        2) exec sudo apt upgrade  ;;
        3) break
   esac
done

Lo script esegue le seguenti operazioni:

  • Riga 3 crea un while infinito ciclo.
  • Righe 5-7 stampa le tre possibili opzioni.
  • Riga 8 legge l'input dell'utente nella variabile $Input .
  • Riga 9 avvia un case dichiarazione che controlla l'input dell'utente.
  • Righe 10-11 eseguire il apt update o apt upgrade comando al posto della shell corrente. Al termine del processo di aggiornamento o aggiornamento, la sessione del terminale viene chiusa.
  • Riga 12 utilizza il break istruzione per uscire dall'infinito while loop e termina lo script. La sessione torna alla shell corrente come al solito.

3. Salva lo script e chiudi Nano.

4. Esegui lo script Bash nell'ambiente corrente per vedere i risultati:

. [script name]

L'esecuzione dello script con il comando source applica il comportamento dello script alla shell Bash corrente. Usa exec per eseguire script Bash all'interno di altri programmi per un'uscita pulita.

Registrazione degli script Bash

Il exec Il comando trova impiego nella manipolazione dei descrittori di file per la registrazione degli errori negli script Bash. I descrittori di file Linux predefiniti sono:

  • stdin (0) - Standard in
  • Stdout (1) - Standard out
  • stderr (2) - Errore standard

Usa il exec comando e reindirizzare i descrittori di file a un file per creare i log. Per vedere come funziona la registrazione, procedi nel seguente modo:

1. Crea uno script Bash di esempio:

nano logging.sh

2. Incolla il codice nel file:

#!/bin/bash

# Create test.log file
touch test.log

# Save test.log to log_file variable
log_file="test.log"

# Redirect stdin to $log_file
exec 1>>$log_file

# Redirect stderr to the same place as stdin
exec 2>&1

echo "This line is added to the log file"
echo "And any other lines after"
eho "This line has an error and is logged as stderr"

Lo script reindirizza tutti gli output e gli errori dei comandi allo stesso file (test.log ).

3. Salva lo script e chiudi l'editor di testo.

4. Modificare l'autorizzazione dello script in eseguibile:

chmod +x logging.sh

5. Esegui lo script:

./logging.sh

Lo script non genera alcun codice. Invece, tutti i log di output vengono registrati in test.log file.

6. Usa il comando cat per vedere test.log contenuto del file:

cat test.log

Il file di registro contiene tutti gli output standard e i messaggi di errore. Usa exec per eseguire il debug di script e registrare input, output o errori a seconda della situazione.

Esegui script in un ambiente pulito

Il -c opzione per il exec comando crea un ambiente pulito. Per eseguire una dimostrazione, fai quanto segue nel terminale:

1. Avvia una nuova sessione della shell Bash:

bash

2. Usa il printenv comando per stampare tutte le variabili d'ambiente nella shell Bash corrente:

printenv

Il comando stampa tutte le variabili d'ambiente per la sessione della shell Bash corrente.

3. Esegui lo stesso comando utilizzando exec con il -c bandiera:

exec -c printenv

Il comando printenv viene eseguito in un ambiente pulito e nessuna variabile emessa nella console. Usa il -c opzione per eseguire script o comandi in ambienti puliti.

exec con trova comando

Il comando find in Linux ha il exec comando come opzione per eseguire un'azione sul contenuto scoperto. Ad esempio, la riga seguente esegue il chmod comando sul find risultati del comando:

sudo find ~ -name "test.log" -exec chmod +x '{}' \;

Il find il comando cerca nella directory home (~ ) per il test.log file ed esegue la modifica dell'autorizzazione.

Conclusione

Dopo aver seguito gli esempi di questo tutorial, dovresti sapere come utilizzare il exec comando in modo efficace negli script Bash.

Quindi, scopri come eseguire automaticamente un lavoro al riavvio utilizzando Crontab.


Linux
  1. Comando wc Linux con esempi

  2. Comando di ordinamento Linux con esempi

  3. Comando Tee Linux con esempi

  4. Comando testa di Linux con esempi

  5. Comando JQ in Linux con esempi

Comando CD Linux con esempi

Comando Linux watch con esempi

Attendi comando in Linux con esempi

Comando di esportazione Linux con esempi

Comando IP Linux con esempi

Comando Linux exec con esempi