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

crontab -e [username]

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

有帮助吗?

解决方案

在我的linux盒子上

crontab -u userName -l > fileName

在fileName中列出userName的crontab文件。

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

最后我会用

crontab -u userName fileName

更新userName的crontab

其他提示

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

假设您有一个变量集: 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
def crontab_add(line)
  config = capture(%Q{crontab -l}).split "\n"
  return if config.include? line
  run %Q{(crontab -l; echo "#{line}") | crontab -}
end

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top