GNU/Linux >> Linux Esercitazione >  >> Linux

Comando di timeout in Linux

timeout è un'utilità della riga di comando che esegue un comando specificato e lo termina se è ancora in esecuzione dopo un determinato periodo di tempo. In altre parole, timeout consente di eseguire un comando con un limite di tempo. Il timeout command fa parte del pacchetto di utilità di base di GNU, che è installato su quasi tutte le distribuzioni Linux.

È utile quando vuoi eseguire un comando che non ha un'opzione di timeout incorporata.

In questo articolo spiegheremo come usare il timeout di Linux comando.

Come utilizzare il timeout Comando #

La sintassi per il timeout il comando è il seguente:

timeout [OPTIONS] DURATION COMMAND [ARG]…

La DURATION può essere un numero intero positivo o un numero a virgola mobile, seguito da un suffisso di unità opzionale:

  • s - secondi (predefinito)
  • m - minuti
  • h - ore
  • d - giorni

Quando non viene utilizzata alcuna unità, il valore predefinito è secondi. Se la durata è impostata a zero, il timeout associato è disabilitato.

Le opzioni di comando devono essere fornite prima degli argomenti.

Ecco alcuni esempi di base che dimostrano come utilizzare il timeout comando:

  • Termina un comando dopo cinque secondi:

    timeout 5 ping 8.8.8.8
  • Termina un comando dopo cinque minuti:

    timeout 5m ping 8.8.8.8
  • Termina un comando dopo un minuto e sei secondi:

    timeout 1.1m ping 8.8.8.8

Se vuoi eseguire un comando che richiede privilegi elevati come tcpdump , anteponi sudo prima del timeout :

sudo timeout 300 tcpdump -n -w data.pcap

Invio di un segnale specifico #

Se non viene fornito alcun segnale, timeout invia il SIGTERM segnalare al comando gestito al raggiungimento del tempo limite. Puoi specificare quale segnale inviare utilizzando i -s (--signal ) opzione.

Ad esempio, per inviare SIGKILL al ping comando dopo un minuto, useresti:

sudo timeout -s SIGKILL ping 8.8.8.8

Puoi specificare il segnale in base al nome, ad esempio SIGKILL o il suo numero come 9 . Il comando seguente è identico al precedente:

sudo timeout -s 9 ping 8.8.8.8

Per ottenere un elenco di tutti i segnali disponibili, usa kill -l comando:

kill -l

Uccidere i processi bloccati #

SIGTERM , il segnale predefinito inviato quando viene superato il limite di tempo, può essere catturato o ignorato da alcuni processi. In queste situazioni, il processo continua a essere eseguito dopo l'invio del segnale di terminazione.

Per assicurarti che il comando monitorato venga terminato, usa -k (--kill-after ) opzione seguita da un periodo di tempo. Quando questa opzione viene utilizzata una volta raggiunto il limite di tempo specificato, il timeout il comando invia il SIGKILL segnale al programma gestito che non può essere catturato o ignorato.

Nell'esempio seguente, timeout esegue il comando per un minuto e, se non viene terminato, lo interromperà dopo dieci secondi:

sudo timeout -k 10 1m ping 8.8.8.8

timeout -k “./test.sh”

ucciso una volta raggiunto il limite di tempo indicato

Preservare lo stato di uscita #

timeout restituisce 124 quando viene raggiunto il limite di tempo. In caso contrario, restituisce lo stato di uscita del comando gestito.

Per restituire lo stato di uscita del comando anche al raggiungimento del limite di tempo, utilizzare il --preserve-status opzione:

timeout --preserve-status 5 ping 8.8.8.8

Correndo in primo piano #

Per impostazione predefinita, timeout esegue il comando gestito in background. Se vuoi eseguire il comando in primo piano, usa il --foreground opzione:

timeout --foreground 5m ./script.sh

Questa opzione è utile quando vuoi eseguire un comando interattivo che richiede l'input dell'utente.

Conclusione #

Il timeout comando viene utilizzato per eseguire un determinato comando con un limite di tempo.

timeout è un comando semplice che non ha molte opzioni. In genere invocherai timeout solo con due argomenti, la durata e il comando gestito.

Se hai domande o feedback, sentiti libero di lasciare un commento.


Linux
  1. Comando ifconfig di Linux

  2. Comando Linux mv

  3. Linux du comando

  4. comando IP Linux

  5. comando cd di Linux

Comando gratuito in Linux

Comando Sudo in Linux

Individua il comando in Linux

Comando W in Linux

Al comando in Linux

Comando Df in Linux