2

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

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

现在我用以下内容创建了update.sh文件/var/www/

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还是别的什么?

谢谢

4

2 回答 2

5

我怀疑问题是作业是从 cron as 运行的,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

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

于 2012-04-04T12:01:40.790 回答
1

如果您需要以其他用户身份运行它,则将其安装在该用户的 crontab 上。而不是试图在脚本中使用 sudo。

于 2012-04-04T11:28:25.223 回答