GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire il timeout di un gruppo di comandi in Bash

Puoi anche utilizzare il metodo Here Document EOF per creare lo script multilinea al volo. Il vantaggio principale è che puoi usare le virgolette doppie senza escape it:

timeout 1s bash <<EOF
    sleep 2s
    echo "something without escaping double quotes"  
EOF

Note:

  1. La chiusura EOF non deve seguire spazi/tabulazioni, ma essere all'inizio dell'ultima riga.
  2. Assicurati di aver esportato le funzioni locali con export -f my_func o set -o allexport per tutte le funzioni (prima di dichiararle). Questo è rilevante per le risposte precedenti inoltre, poiché chiamando bash/sh esegue il processo in una nuova sessione, ignaro delle funzioni dell'ambiente locale.

timeout non è un'utilità di shell e non esegue l'elaborazione in stile shell. Deve essere dato un singolo comando da eseguire. Quel comando, tuttavia, può avere qualsiasi numero di argomenti. Fortunatamente, uno dei comandi che puoi dargli è bash :

timeout 1 bash -c '{ sleep 2; echo something; }'

Naturalmente, in questa forma, le parentesi graffe sono ora superflue:

timeout 1 bash -c 'sleep 2; echo something'

Qui, bash è il comando che timeout esegue. -c e sleep 2; echo something sono argomento di quel comando.


Linux
  1. Come usare i comandi della cronologia di Bash

  2. Come scrivere un ciclo in Bash

  3. Come specificare un completamento automatico personalizzato per comandi specifici?

  4. Come uccidere un processo figlio dopo un determinato timeout in Bash?

  5. Come elencare le cartelle usando i comandi bash?

Come commentare in Bash

Come personalizzare il prompt di Bash in Linux

Come aggiungere un utente al gruppo in Linux

Come correggere facilmente i comandi Bash errati in Linux

Come eseguire uno script Bash

Come aumentare il timeout nello stucco?