【问题标题】:Creating crontab via Capistrano instead of using crontab -e通过 Capistrano 而不是使用 crontab -e 创建 crontab
【发布时间】:2010-12-08 21:50:17
【问题描述】:

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

crontab -e [username]

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

【问题讨论】:

    标签: ruby cron capistrano crontab


    【解决方案1】:

    查看Whenever gem -- 这可能超出了您的预期,但它使用非常简单的 (Ruby) 语法,并且可以非常简单地在 capistrano 部署脚本中设置 cron 作业。

    【讨论】:

    • 谢谢。那是一颗看起来很整洁的宝石。
    • 太棒了——我在多个应用部署的生产环境中使用它。
    • 阅读此答案后,我决定为自己的项目尝试此方法。效果很好! Ryan Bates 整理了一段关于使用 When:railscasts.com/episodes/164-cron-in-ruby 的 railscast 剧集
    【解决方案2】:

    在我的 linux 机器上

    crontab -u userName -l > fileName
    

    列出 fileName 中 userName 的 crontab 文件。

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

    最后我会使用

    crontab -u userName fileName
    

    更新用户名的 crontab

    【讨论】:

    • 感谢您发布此解决方案。我想我会试试这个。
    【解决方案3】:

    假设您有一个变量集: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
      

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-03-14
          • 2011-03-12
          • 2018-02-15
          • 2011-06-20
          • 1970-01-01
          • 2016-08-01
          • 2015-10-27
          相关资源
          最近更新 更多