2012-05-08 13 views

risposta

17

Semplice. vuoi usare 'at' per pianificare il tuo lavoro. e 'data' per calcolare il tuo momento nel futuro.

Esempio:

echo b.sh | at now + 1 minute 

o:

echo b.sh | at -t `date -v+60S "+%Y%m%d%H%M%S"` 

-v+60S aggiunge 60 secondi l'ora corrente. Puoi controllare esattamente quanti secondi vuoi aggiungere.

Ma di solito, quando le persone vogliono che un programma avvenga un minuto dopo l'altro, non sono sicuri al 100% che non ci vorrà più o meno di un minuto. questo è tutto. b.sh potrebbe essere lanciato prima che a.sh sia finito. oppure a.sh potrebbe essere terminato 30 secondi prima rispetto a "pianificato" e b.sh avrebbe potuto essere avviato più velocemente.

Consiglierei un modello diverso. Dove viene avviato prima b.sh. a.sh crea un file temporaneo all'avvio. execute è task ed elimina il suo file temp alla fine. b.sh guardare per il file temp da creare, quindi cancellato. e iniziare i suoi compiti.

+1

Sì, grazie! È esattamente quello che voglio. Ma forse c'è un po 'di errore? Dice "Opzione non valida data - v" –

+3

@alexchan: diverse versioni di 'date' supportano diverse opzioni. Prova: 'echo b.sh | ora + 1 minuto' –

+0

Il b.sh verrà eseguito in una finestra visiva? e come? –

2

rendere la linea finale della a.sh:

sleep 60 && b.sh 

(Se b.sh non è in una directory in PATH, fanno si che il percorso completo b.sh.)

3

Puoi basta sleep:

a.sh 
sleep 60 
b.sh 

O per i casi più complessi è possibile utilizzare il comando at:

echo b.sh | at now + 1 minute 

Vedere la pagina man at per ulteriori informazioni.

+0

Proverò il successivo –

+0

No, esegue b.sh come previsto BTW, come eseguirlo dopo 10 secondi? Ho cambiato il minuto al secondo, si dice errore di sintassi. –

+0

@alexchan: "at" non fa incrementi di tempo più fini di un minuto. –

0

È possibile utilizzare il comando per sospendere lo script per 1 minuto.

sleep 1m 

Poi, quando si desidera chiamare il 2 ° sceneggiatura

bash a.sh 
0

Se si desidera eseguire il secondo script un determinato numero di secondi dopo l'inizio del primo script, si può fare questo in primo:

b.sh & 

e questo nella seconda:

sleep 10 
# more commands 

È possibile passare il numero di secondi come argomento dal primo al secondo.

Sfortunatamente, at non esegue incrementi di tempo inferiori a un minuto.

0

Pianificare entrambi gli script da eseguire contemporaneamente in cron e inserire il ritardo richiesto in b.sh.

Problemi correlati