GNU/Linux >> Linux Esercitazione >  >> Linux

Tutorial sull'uso del comando Timeout su Linux

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

Questo comando è utile quando desideri eseguire un comando che non dispone di un'opzione di timeout incorporata o interrompere un processo dopo un certo periodo di esecuzione.

In questo articolo spiegheremo come usare i comandi timeout nel terminale Linux.

Come utilizzare il comando di timeout

La sintassi per il comando di timeout è la seguente:

timeout [OPTIONS] DURATION COMMAND [ARG]…

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

  • s – secondi (secondi) (questa è l'opzione predefinita)
  • m – minuti (minuti)
  • h – ore (ore)
  • d – giorni (giorni)

Quando non vengono utilizzate unità, l'impostazione predefinita è secondi. Se la durata è impostata a zero, il timeout associato è disabilitato.

Le opzioni di comando devono essere fornite prima dell'argomento.

Ecco alcuni esempi di base che mostrano come usare il comando timeout :

  • Interrompi il comando ping dopo cinque secondi::timeout 5 ping 8.8.8.8
  • Interrompi il comando dopo cinque minuti:timeout 5m ping 8.8.8.8
  • Interrompi il comando dopo un minuto e sei secondi:timeout 1.1m ping 8.8.8.8

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

sudo timeout 300 tcpdump -n -w data.pcap

Invio di segnali specifici

Se non viene dato alcun segnale, timeout utilizzerà il segnale SIGTERM per il comando specificato quando viene raggiunto il timeout. Puoi specificare quale segnale usare usando -s ( --signal ) opzione.

Ad esempio, per inviare SIGKILL a un comando ping dopo un minuto, puoi usare il comando:

sudo timeout -s SIGKILL ping 8.8.8.8

Il segnale può essere specificato dal suo nome come SIGKILL o un 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, utilizza il comando kill -l :

kill -l

Uccidi il processo bloccato

SIGTERM , il segnale predefinito inviato al superamento del timeout potrebbe essere rilevato o ignorato da alcuni processi. In tale situazione, il processo continua a essere eseguito dopo l'invio del segnale di terminazione.

Per assicurarti che il comando monitorato si sia interrotto, usa l'opzione -k ( --kill-after ) seguito da un periodo di tempo. Quando questa opzione viene utilizzata dopo che è stato raggiunto il timeout specificato, il comando timeout invia un segnale SIGKILL al programma corrispondente all'input dell'utente.

Nell'esempio seguente, è timeout esegue il comando per un minuto e, se non viene terminato, "ucciderà" il programma dopo dieci secondi:

sudo timeout -k 10 1m ping 8.8.8.8
timeout -k “./test.sh”

Il processo verrà interrotto una volta raggiunto il limite di tempo indicato anche se è bloccato.

Mantenimento dello stato di uscita

timeout restituirà 124 quando il tempo limite è stato raggiunto. Altrimenti, il comando timeout restituirà lo stato di uscita del comando gestito.

Per restituire lo stato di uscita del comando anche al raggiungimento del timeout, utilizzare l'opzione --preserve-status :

timeout --preserve-status 5 ping 8.8.8.8

Esecuzione dei comandi in primo piano

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

timeout --foreground 5m ./script.sh

Questa opzione è utile quando vuoi eseguire comandi interattivi che richiedono l'input dell'utente.

Conclusione

Il comando è timeout utilizzato per eseguire un determinato comando con un limite di tempo secondo la volontà dell'utente.

Comandi timeout sono comandi semplici che non hanno molte opzioni. Di solito utilizzerai un comando timeout con solo due argomenti, durata e il comando che si verificherà.


Linux
  1. Un'introduzione all'uso di tcpdump nella riga di comando di Linux

  2. Padroneggia il comando ls di Linux

  3. Usando la forza sulla riga di comando di Linux

  4. Introduzione al comando alternatives in Linux

  5. Il comando locate in Linux

Il comando timer in Linux

Esegui processi in background in Linux usando il comando Screen

Il comando curl di Linux

Tutorial sull'utilizzo dell'ultimo comando nel terminale Linux

Utilizzo del comando Watch in Linux

Usare il comando tr in Linux per giocare con i personaggi