2011-09-06 14 views
21

Sto provando a scrivere un processo cron sulla mia macchina Mac OS X che eseguirà uno script Ruby ogni giorno alle 12:20.Come posso creare un cron job che verrà eseguito tutti i giorni alle 12:20?

Questo è quello che ho bisogno di correre, ma non so la sintassi o il comando da utilizzare su Mac:

/usr/bin/ruby /Users/tamer/scripts/sftp.rb 

ho letto di fare crontab -e ma ho bisogno di fare qualcosa dopo?

risposta

39

Il crontab per "tutti i giorni alle 12:20 am" è

20 0 * * * 

L'intera linea di crontab sarebbe allora

20 0 * * * /usr/bin/ruby /Users/tamer/scripts/sftp.rb 
11

La voce crontab dovrebbe essere simile:

20 0 * * * /usr/bin/ruby /Users/tamer/scripts/sftp.rb 

Si presume che non sia necessaria alcuna altra variabile di ambiente per far funzionare tutto. Se hai bisogno di altre variabili, quindi crea uno script di shell per l'ambiente che poi esegue il programma e lo script di Ruby.

per inoltrare il processo, io di solito uso:

crontab -l > x3 
echo "20 0 * * * /usr/bin/ruby /Users/tamer/scripts/sftp.rb" >> x3 
crontab < x3 
rm x3 
+1

Non basta usare '-e' crontab per modificare il file di configurazione crontab (al posto di utilizzare il file temporaneo x3)? – snowbound

+1

@snowbound: Forse, ma solo se sapessi/ricordato che l'opzione era presente e se volevo fare il montaggio interattivo. Se lo stavo scrivendo, a parte l'utilizzo di un nome di file temporaneo migliore (ad esempio da 'mktemp'), probabilmente lo farei come mostrato. Oppure, poiché normalmente conservo la mia voce 'crontab' sotto il controllo del codice sorgente, vorrei modificare la versione principale del file e inoltrarla di nuovo dopo aver controllato la modifica. –

+0

il tuo approccio ha anche il vantaggio di poter essere chiamato a livello di programmazione da un altro script: D – snowbound

Problemi correlati