GNU/Linux >> Linux Esercitazione >  >> Linux

Come eseguire un comando per un tempo specifico in Linux

L'altro giorno stavo trasferendo un file di grandi dimensioni utilizzando rsync su un altro sistema sulla mia rete locale. Poiché è un file molto grande, ci sono voluti circa 20 minuti per essere completato. Non voglio aspettare molto più a lungo, e inoltre non voglio nemmeno terminare manualmente il processo premendo CTRL+C. Mi chiedevo solo se ci potessero essere modi semplici per eseguire un comando per un tempo specifico e ucciderlo automaticamente una volta scaduto il tempo in sistemi operativi simili a Unix - da qui questo post. Continua a leggere.

Esegui un comando per un tempo specifico in Linux

Possiamo farlo in due metodi.

Metodo 1:utilizzo del comando "timeout"

Il metodo più comune è utilizzare il timeout comando per questo scopo. Per chi non lo sapesse, il comando di timeout limiterà efficacemente il tempo assoluto di esecuzione di un processo. Il comando timeout fa parte del pacchetto GNU coreutils, quindi è preinstallato in tutti i sistemi GNU/Linux.

Diciamo che vuoi eseguire un comando solo per un tempo specifico, quindi ucciderlo automaticamente una volta trascorso il tempo. Per farlo, utilizziamo:

$ timeout <time-limit-interval> <command>

Ad esempio, il comando seguente terminerà dopo 10 secondi.

$ timeout 10s tail -f /var/log/pacman.log

Inoltre, non è necessario specificare il suffisso "s" per secondi. Il comando seguente è lo stesso di sopra.

$ timeout 10 tail -f /var/log/pacman.log

Gli altri suffissi disponibili sono:

  • 'm' per minuti,
  • 'h' per ore
  • 'd' per giorni.

Se esegui questo tail -f /var/log/pacman.log comando, continuerà a funzionare fino a quando non lo termini manualmente premendo CTRL+C. Tuttavia, se lo esegui insieme a timeout comando, verrà ucciso automaticamente dopo l'intervallo di tempo specificato.

Nel caso in cui il comando sia ancora in esecuzione anche dopo il timeout, puoi inviare un kill segnale come di seguito.

$ timeout -k 20 10 tail -f /var/log/pacman.log

In questo caso, se il comando tail è ancora in esecuzione dopo 10 secondi, il comando di timeout gli invierà un segnale di kill dopo 20 secondi e lo terminerà.

Il comando Timeout può essere particolarmente utile durante la risoluzione dei problemi hardware. Ad esempio, esegui il comando seguente per visualizzare tutti i messaggi dal buffer dell'anello del kernel, ma solo per 10 secondi.

$ timeout 10 dmesg -w

Per maggiori dettagli, controlla le pagine man.

$ man timeout

A volte, un particolare programma potrebbe richiedere molto tempo per essere completato e finire per bloccare il sistema. In questi casi, puoi utilizzare questo trucco per terminare automaticamente il processo dopo un determinato periodo di tempo.

Inoltre, considera l'utilizzo di Cpulimit , una semplice applicazione per limitare l'utilizzo della CPU di un processo. Per maggiori dettagli, controlla il seguente link.

  • Come limitare l'utilizzo della CPU di un processo in Linux

Metodo 2:utilizzo del programma "Timelimit"

L'utilità Timelimit esegue un dato comando con gli argomenti forniti e termina il processo generato dopo un dato tempo con un dato segnale. In primo luogo, passerà l'avviso segnale e poi, dopo il timeout, invierà il kill segnale.

A differenza dell'utilità di timeout, Timelimit ha più opzioni. Puoi passare un numero di argomenti come killsig, warnsig, killtime, warntime ecc.

È disponibile nei repository predefiniti dei sistemi basati su Debian. Quindi, puoi installarlo usando il comando:

$ sudo apt-get install timelimit

Per i sistemi basati su Arch, è disponibile in AUR. Quindi, puoi installarlo utilizzando qualsiasi programma di supporto AUR come Pacaur , Imballatore , , Yaourt ecc.

Per altre distribuzioni, scarica il sorgente da qui e installarlo manualmente.

Dopo aver installato il programma Timelimit, eseguire il comando seguente per un tempo specifico, ad esempio 10 secondi:

$ timelimit -t10 tail -f /var/log/pacman.log

Se esegui timelimit senza alcun argomento, utilizzerà i valori predefiniti:wartime=3600 secondi , avviso=15 , tempo di riposo=120 , killsig=9 .

Per maggiori dettagli, fare riferimento alle pagine man e al sito web del progetto forniti alla fine di questa guida.

$ man timelimit

E per oggi è tutto. Spero che questo sia stato utile. Altre cose buone in arrivo. Resta sintonizzato!

Ciao!


Linux
  1. Tutorial sui comandi dell'ora di Linux per principianti (con esempi)

  2. Come eseguire l'applicazione per un determinato periodo di tempo in Shell?

  3. Come pianificare le attività utilizzando in Linux

  4. Come programmare l'esecuzione di tcpdump per un periodo di tempo specifico?

  5. linux:come eseguire un comando in una determinata directory

Come eseguire i comandi Linux in background

Comando di timeout in Linux

Ultimo comando in Linux

Spiegazione del comando di timeout di Linux per i principianti (con esempi)

Come eseguire Windows 95 su Linux

Come eseguire periodicamente un comando in Linux usando Watch