使用Capistrano创建crontab而不是使用crontab -e

6

我想在我的Capistrano部署文件中包含cron任务,而不是手动编辑crontab文件使用以下命令:

crontab -e [username]

在Capistrano运行命令中是否有脚本可以设置crontab的内容?

5个回答

15

看看Whenever gem -- 这可能超出您的意图,但它使用非常简单的(Ruby)语法,并使在capistrano部署脚本中设置cron作业变得非常简单。


谢谢。那是一颗漂亮的宝石。 - tdewell
太棒了——我正在多个应用程序部署中使用它。 - bensie
阅读了这个答案后,我决定在自己的项目中尝试一下。效果非常好!Ryan Bates制作了一个关于使用Whenever的RailsCast,链接:http://railscasts.com/episodes/164-cron-in-ruby - Alfred Fazio

5

在我的Linux电脑上

crontab -u userName -l > fileName

列出userName在fileName中的crontab文件。

然后我会使用Ruby(或其他语言)脚本来更新该文件。

最后,我会使用

crontab -u userName fileName

更新 userName 的 crontab


感谢您发布这个解决方案。我想我会尝试一下。 - tdewell

4

假设你有一个设置变量:new_user

并且你正在使用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

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

0
为什么不包含一个可以安装到 /etc/cron.d 的 crontab?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接