【问题标题】:EC2 user data script crashes during SVN updateEC2 用户数据脚本在 SVN 更新期间崩溃
【发布时间】:2011-04-27 04:49:50
【问题描述】:

我正在尝试使用 EC2 用户数据脚本 shebang 功能来更新已在实例的 EBS 映像上签出的 SVN 存储库,然后运行一些其他命令。该脚本在svn up 命令期间不断崩溃,使存储库中的大部分或所有文件处于锁定状态。 svn up 命令之后的命令都不运行。

我的用户数据脚本如下所示:

#!/bin/bash
echo "about to update..." >> /home/ubuntu/test.log
svn up /home/ubuntu/path/to/repository
echo "update finished" >> /home/ubuntu/test.log

svn up 没有正确完成,第二个echo 命令没有执行。

我没有在任何日志中看到任何错误(我不确定我应该检查哪些日志,但我已经查看了所有明显的日志)。任何想法为什么 svn 会失败?

【问题讨论】:

  • 注意,如果我在 ssh 到计算机后立即从命令行运行用户数据脚本,它会正确执行。
  • 试试:cd /home/ubuntu/path/to/repository; svn 清理; svn更新

标签: svn ubuntu amazon-ec2


【解决方案1】:

权限问题?试试:

sudo svn up ...

【讨论】:

  • 我认为这可能是权限问题,但我验证了用户数据脚本始终以 root 身份运行。
  • 在那种情况下,我不知道为什么我的脚本在不包括 sudo 的情况下无法在 Ubuntu 实例上正常运行。
【解决方案2】:

我终于想出了一个方法来让它工作。我没有直接在我的用户数据脚本中调用 svn up,而是编译了一个简单的 C 应用程序,它执行 svn up 并在用户数据脚本中执行它:

#include <stddef.h>
#include <stdlib.h>
#include <unistd.h>
int main(void) {
    execl("/usr/bin/svn", "svn", "update", "/path/to/repository/", (const char *) NULL);
    return(EXIT_SUCCESS);
}

不幸的是,我不太清楚为什么会这样。我想尝试一下,因为我们在 SVN 提交后挂钩中遇到了类似的问题,需要相同的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-03
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多