Créer une crontab via Capistrano au lieu d'utiliser crontab -e
-
05-07-2019 - |
Question
Je voudrais inclure des tâches cron dans mes fichiers de déploiement Capistrano au lieu d'utiliser la commande suivante pour modifier manuellement le fichier crontab:
crontab -e [username]
Existe-t-il un script que je pourrais utiliser dans la commande d'exécution Capistrano pour définir le contenu de la crontab?
La solution
Sur ma machine Linux
crontab -u userName -l > fileName
répertorie le fichier crontab pour userName dans fileName.
J'utiliserais ensuite un script ruby ??(ou une autre langue) pour mettre à jour le fichier.
Enfin, je voudrais utiliser
crontab -u userName fileName
pour mettre à jour la crontab pour le nom d'utilisateur
Autres conseils
Découvrez le Chaque fois que pierre précieuse - cela peut aller au-delà de ce que vous avez l'intention de faire, mais il utilise une syntaxe très simple (Ruby) et simplifie grandement la configuration de tâches cron dans un script de déploiement capistrano.
étant donné que vous avez un jeu de variables qui est: nouveau_utilisateur
et que vous utilisez 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
def crontab_add(line)
config = capture(%Q{crontab -l}).split "\n"
return if config.include? line
run %Q{(crontab -l; echo "#{line}") | crontab -}
end
Pourquoi ne pas inclure une crontab pouvant être installée dans /etc/cron.d?