2010-12-12 11 views

risposta

17

Provalo con questo, avvia il tuo comando in background, memorizza il suo PID in $ P, aspetta un po 'di tempo e lo uccide con un SIGHUP.

yourCommand & PID=$! 
sleep ${someMinutes}m 
kill -HUP $PID 

Acclamazioni

PS: che presuppone un sonno che conosce Nm (minuti), altrimenti, si potrebbe desiderare di fare un po 'di matematica :)

+0

+1 e 'sonno $ ((minuti * 60))' :) – khachik

+0

Khachik, che è stato l'esercizio per il lettore colto;) –

+0

Grazie! Questo è essenzialmente il Perl che ho appena scritto, ma è bello vederlo come un semplice idioma di shell. Mi piacerebbe ancora una sceneggiatura pre-costruita, se qualcuno ne è a conoscenza, ma accetterò questa come risposta. –

10
n=5 
some_command & 
pid=$! 
at now + $n minutes <<<"kill -HUP $pid" 

Il vantaggio di utilizzare at over in attesa di sleep è che il tuo script non bloccherà aspettando che il sonno scada. Puoi andare e fare altre cose e at sparerà in modo asincrono all'ora specificata. A seconda del tuo script, potrebbe essere una caratteristica molto importante.

+0

Ho dato questo +1 per la funzione asincrona, anche se il blocco è quello che avevo in mente. –

Problemi correlati