我有一个预定的脚本,它对我们的Subversion存储库进行每小时svnsync备份.我从root crontab中的一个条目运行它没有问题,但我决定从/etc/cron.hourly运行它来代替额外的可见性(因为我们的一个工程师意外删除了crontab,因为他认为“crontab -r“意思是”读取crontab ;-))
cron.hourly脚本中的svnsync命令都失败,并显示一条消息,说明需要接受SVN存储库的SSL证书(这是用户第一次访问SVN存储库时以交互方式获得的消息,但是一旦证书I接受了消息不再出现).
所以在我看来,当从cron.hourly运行时,脚本在不同的用户环境下执行,而不是通过root crontab运行时.有人可以解释这个区别吗?
更新:我应该提到我的发行版,我在CentOS 5.1上使用了anacron.
更新2:感谢目前为止的建议;我认为这更像是一个颠覆问题.我总是尝试将我的环境封装到我的脚本中,但问题在于我不确定它是什么(或缺少)环境使得SVN要求在我运行脚本时接受SSL证书cron.hourly.我猜它与run-parts脚本的执行方式有关.
解决方法
您想使用’–config-dir’选项让它知道在哪里找到接受的证书(例如默认情况下为〜/ .subversion).
也就是说,我几乎可以肯定你最好从hooks / post-commit脚本调用svnsync,而不是suggested elsewhere.那么你的镜像始终是同步的,而不是与你的主人在一小时前的位置同步.