如何使用带有crontab的svn更新代码


How to update code using svn with crontab?

登录服务器后,我使用以下步骤更新服务器上的代码:

sudo -s
<wrote password here>
cd /var/www/staging
rm -r app.old
mv app app.old
svn checkout https://example.com/projectname/trunk/app app

现在我在/var/www/中创建了update.sh文件,其中包含以下内容

cd /var/www/staging
rm -r app.old
mv app app.old
svn checkout https://example.com/projectname/trunk/app app

我有以下crontab条目每5分钟运行一次:

*/5 * * * * /var/www/update.sh

问题:所以cron作业正在工作,但它只是删除app文件夹,而不是从svn存储库中签出它。但当我手动运行bash /var/www/update.sh时,它在sudo -s之后运行良好。

如何为cron作业修复此问题。它与sudo -s或其他什么有关吗?

感谢

我怀疑问题是作业以root的身份从cron运行,并且根用户没有签出的权限。

首先,我建议您在脚本中包含与SVN一起使用的用户名/密码的详细信息:

svn checkout --username USER --password PASS ttps://example.com/projectname/trunk/app app

接下来,将crontab中的行更改为:

*/5 * * * * /var/www/update.sh 2>&1| mail -s "Cron job execution" youremail@wherever.com

然后,当作业执行时,任何错误都会通过电子邮件发送给您。至少你会发现哪里出了问题。

如果您需要以不同的用户身份运行它,那么请将它安装在该用户的crontab上。而不是试图在剧本中翻来覆去。