2009-10-21 8 views
6

vorrei includere operazioni di cron nei miei file di distribuzione Capistrano invece di utilizzare il seguente comando per modificare manualmente il file crontab:Creazione crontab via Capistrano invece di utilizzare crontab -e

crontab -e [username] 

C'è uno script che ho potrebbe usare all'interno del comando Esegui Capistrano per impostare i contenuti del crontab?

risposta

5

sulla mia macchina Linux

crontab -u userName -l > fileName 

elenca il file crontab per userName nel nome del file.

Quindi vorrei utilizzare uno script rubino (o un'altra lingua) per aggiornare il file.

Infine vorrei utilizzare

crontab -u userName fileName 

per aggiornare il crontab per userName

+0

Grazie per la pubblicazione di questa soluzione. Penso che ci proverò. – tdewell

15

Partenza la gemma Whenever - questo può essere estende al di là di quello che avete intenzione di fare, ma utilizza molto semplice (Ruby) sintassi e rende semplicissimo configurare i lavori cron all'interno di uno script di distribuzione capistrano.

+0

Grazie. Questa è una gemma dall'aspetto curato. – tdewell

+0

È fantastico: lo sto utilizzando in produzione su diverse distribuzioni di app. – bensie

+0

Dopo aver letto questa risposta ho deciso di provare questo per il mio progetto. Funziona alla grande! Ryan Bates ha messo insieme un episodio di railscast sull'uso di Whenever: http://railscasts.com/episodes/164-cron-in-ruby –

0

Perché non includere un crontab che può essere installato su /etc/cron.d?

+0

Perché è stato downvoted? – matheeeny

4

dato che si dispone di un set variabile che è: new_user

e che si sta utilizzando use_sudo true

desc "install crontab" 
task :install_crontab do 
    run "echo '0 23 * * * /home/#{new_user}/scripts/backup_#{new_user}.sh' | #{sudo} crontab -u #{new_user} -" 
end 
+0

fantastico! molte grazie! –

4
def crontab_add(line) 
    config = capture(%Q{crontab -l}).split "\n" 
    return if config.include? line 
    run %Q{(crontab -l; echo "#{line}") | crontab -} 
end