2010-07-26 22 views
6

Voglio creare cron job che esegue uno script ogni 5 secondi. Vedendo che i lavori cron consentono solo incrementi di minuti 0-59 e così via.Cron jobs - da eseguire ogni 5 secondi

Ho pensato di creare un altro script che chiama il mio script originale scritto di seguito.

#!/bin/bash 

while true 
do 
# script in the same directory as this script. is this correct? 
bash makemehappy.sh 
sleep 1 
done 

ora, bisogno di sapere come eseguire questo script ogni volta che avvio il mio computer e che venga avviato se stessa se non è in esecuzione per qualche motivo.

Sono anche consapevole del fatto che eseguire questo script ogni minuto non sarebbe una buona cosa. :)

se esiste un modo più semplice per eseguire uno script ogni 5 secondi, si prega di avvisare.

Per favore e grazie.

+8

Provare a fare qualcosa ogni 5 secondi è davvero la soluzione migliore per il tuo problema? – user347594

risposta

7

Non vorrei usare cron per questo. Vorrei usare quello script bash (usa un percorso assoluto, a meno che tu non voglia che sia portatile e sappia che la struttura di directory sarà preservata).

Invece, vorrei solo sleep 5, proprio come hai fatto tu (solo 5 secondi invece di 1).

Per quanto riguarda l'avvio con il sistema, ciò dipende dal sistema. Su (alcune) distribuzioni Linux, c'è un file chiamato /etc/rc.local in cui è possibile aggiungere script da eseguire all'avvio del sistema. Beh ... non dovrei essere così generico, le distro che ho usato hanno questo. Se stai usando Ubuntu, non c'è più un inittab, usano upstart, btw.

Quindi se hai un ciclo infinito e una voce in /etc/rc.local, allora dovresti essere d'oro perché funzioni all'infinito (o finché non incontra un problema ed esce).

+0

La mia distribuzione è ubuntu? Non riesco a trovare quel file rc.local nella directory etc. suggerimenti? – myusuf3

+0

quale versione? (cat/etc/issue) – Tim

+0

10.04 Sono riuscito a capirlo. :) aggiungendolo a init.d e aggiornando l'aggiornamento-rc.d – myusuf3

2

Provare ad usare anacron o, meglio ancora, uno script di init da avviare all'avvio del computer.

Se si desidera che lo script "si riavvii", è necessario eseguire qualcosa ogni pochi minuti per verificare che l'originale sia ancora in esecuzione. Questo può essere fatto inittab (/etc/inittab) o, su Ubuntu, /etc/event.d. Prova man 5 inittab, guardando l'opzione 'respawn'.

1

Alcuni cron s hanno un identificatore di tempo @reboot (questo copre tutti i campi di data e ora). Se lo fai, puoi usarlo. Se questo è un servizio "di sistema" (piuttosto che qualcosa in esecuzione autonomamente), le altre soluzioni qui sono probabilmente migliori.

1

Gli script di inizializzazione vanno bene all'avvio, ma non rilevano se un processo fallisce e deve essere riavviato. supervisord esegue un ottimo lavoro per rilevare i processi non riusciti e riavviarli. Suggerirei uno script con un ciclo di 5 secondi come @Tim descritto, ma avvolgere supervisord attorno ad esso per assicurarsi che continui a funzionare.

Problemi correlati