2009-10-21 40 views
6

tôi muốn bao gồm nhiệm vụ cron trong các tập tin triển khai Capistrano của tôi thay vì sử dụng lệnh sau để tự chỉnh sửa file crontab:Tạo crontab qua Capistrano thay vì sử dụng crontab -e

crontab -e [username] 

Có một kịch bản tôi có thể sử dụng trong lệnh chạy Capistrano để đặt nội dung của crontab?

Trả lời

5

Mở hộp linux của tôi

crontab -u userName -l > fileName 

liệt kê các file crontab cho userName trong fileName.

Sau đó, tôi sẽ sử dụng tập lệnh ruby ​​(hoặc ngôn ngữ khác) để cập nhật tệp.

Cuối cùng tôi xin sử dụng

crontab -u userName fileName 

để cập nhật các crontab cho userName

+0

Cảm ơn đã gửi bài giải pháp này. Tôi nghĩ rằng tôi sẽ cố gắng này. – tdewell

15

Kiểm tra các Whenever đá quý - điều này có thể được kéo dài xa hơn những gì bạn đang có ý định làm, nhưng nó sử dụng rất đơn giản (Ruby) cú pháp và làm cho nó chết đơn giản để thiết lập công việc cron trong một kịch bản triển khai capistrano.

+0

Cảm ơn. Đó là một viên ngọc tìm kiếm gọn gàng. – tdewell

+0

Thật tuyệt vời - Tôi đang sử dụng nó trong sản xuất trên một số triển khai ứng dụng. – bensie

+0

Sau khi đọc câu trả lời này, tôi đã quyết định thử điều này cho dự án của riêng tôi. Hoạt động tuyệt vời! Ryan Bates đã tập hợp một tập hợp railscast về việc sử dụng Everywhere: http://railscasts.com/episodes/164-cron-in-ruby –

0

Tại sao không bao gồm một crontab có thể được cài đặt vào /etc/cron.d?

+0

Tại sao điều này lại được bình chọn? – matheeeny

4

cho rằng bạn có một bộ biến đó là: new_user

và rằng bạn đang sử dụng 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

tuyệt vời! cảm ơn rất nhiều! –

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 
Các vấn đề liên quan