通过Capistrano创建crontab而不是使用crontab -e
-
05-07-2019 - |
题
我想在我的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?
不隶属于 StackOverflow