人们如何将cronjobs部署/版本控制生产?我对人们使用的约定/标准比任何特定的解决方案更好奇,但我碰巧使用git进行版本控制,而cronjob正在运行python/django脚本.
如果您使用Fabric for deploment,您可以添加一个编辑crontab的函数.
def add_cronjob(): run('crontab -l > /tmp/crondump') run('echo "@daily /path/to/dostuff.sh 2> /dev/null" >> /tmp/crondump') run('crontab /tmp/crondump')
这会给你的crontab附加一份工作(免责声明:完全没有经过测试,而且不是非常有效的).
将crontab保存到临时文件.
在tmpfile中附加一行.
写回crontab.
这可能并不完全是你想要做的,但沿着这些方面,你可以考虑将crontab检查为git并在每次部署时在服务器上覆盖它.(如果您的项目有专门的用户.)
使用Fabric,我更喜欢在本地保留我的crontab的原始版本,这样我就可以确切知道生产中的内容,并且除了添加它们之外还可以轻松编辑条目.
我使用的结构脚本看起来像这样(一些代码编辑,例如处理备份):
def deploy_crontab(): put('crontab', '/tmp/crontab') sudo('crontab < /tmp/crontab')