login到服务器后,我正在使用以下步骤更新服务器上的代码:
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
我每隔5分钟就有以下crontab项目运行:
*/5 * * * * /var/www/update.sh
问题:所以cron作业正在工作,但它只是删除app
文件夹,而不是从svn仓库检出它。 但是当我手动运行bash /var/www/update.sh
,它在sudo -s
之后工作正常。
如何解决这个cron工作以及。 它与sudo -s
或其他什么有关?
谢谢
我怀疑问题是作业是从cron作为root
运行,root用户没有权限结帐。
首先,我建议您在脚本中包含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上。 而不是试图在脚本中重述。