Создание crontab через Capistrano вместо использования crontab -e
-
05-07-2019 - |
Вопрос
Я хотел бы включить задачи cron в мои файлы развертывания Capistrano вместо того, чтобы использовать следующую команду для ручного редактирования файла crontab:
crontab -e [username]
Есть ли скрипт, который я мог бы использовать в команде запуска Capistrano, чтобы установить содержимое crontab?
Решение
На моем компьютере с Linux
crontab -u userName -l > fileName
выводит список файлов crontab для имени пользователя в поле fileName.
Затем я бы использовал скрипт ruby (или на другом языке) для обновления файла.
Наконец, я бы использовал
crontab -u userName fileName
чтобы обновить crontab для имени пользователя
Другие советы
Ознакомьтесь с драгоценным камнем - это может выходить за рамки того, что вы собираетесь делать, но он использует очень простой (Ruby) синтаксис и упрощает настройку заданий cron в сценарии развертывания capistrano.
учитывая, что у вас есть набор переменных: 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
Почему бы не включить crontab, который можно установить в /etc/cron.d?