登录服务器后,我使用以下步骤更新服务器上的代码:
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上。而不是试图在剧本中翻来覆去。