Come eseguire l'applicazione per un tempo prestabilito nella shell


12

Se e come è possibile, in Terminal, far funzionare un'applicazione per 30 secondi, prima di essere forzata alla chiusura e fare eco ai registri di quel processo?


@JacobVlijm Funzionerebbe idealmente come script di shell a causa della portabilità del linguaggio, principalmente perché l'area di utilizzo prevista è un servizio CI.
ir-g,

1
@ ir-g è possibile utilizzare il comando timeout . ad es. comando timeout 30s
mcantsin

Risposte:


19

Potrebbe essere necessario utilizzare il comando timeout .

timeout -k 10s 30s command

che eseguirà il comando per 30 secondi e lo ucciderà dopo 10 secondi se ancora in esecuzione. - Controlla la manpage per ulteriori opzioni.


1
@ ir-g di niente. Potresti anche voler dare un'occhiata al comando watch , che è simile e anche molto facile da usare nella riga di comando.
mcantsin,

2
Grazie per quel puntatore, watchmi sembra un comando molto interessante. Potrebbe tornare utile ...
ir-g,

3

Ecco due modi (ma il timeoutcomando suggerito da mcantsin è probabilmente migliore):

  1. Avvia il comando in background, in questo modo viene salvato il suo PID $!e puoi usarlo per ucciderlo dopo il tempo specificato:

    command &
    sleep 30 && kill $!
  2. Avvia il comando e usa pkillo killallper ucciderlo. ATTENZIONE: questo presuppone che sia in esecuzione solo un comando con quel nome, che sto usando firefoxcome esempio:

    firefox &
    sleep 30 && pkill firefox

Non ho idea di cosa intendi con "i registri di quel processo", ma l'errore standard di un processo può essere salvato in un file con command 2> logfile.txt.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.