0

这是基于 ubuntu 的自动缩放 amazon ec2 实例的 rc.local:(请注意,出于安全目的,用户名、域和路径已更改)

logger "Begin rc.local startup script:"

logger "svn checkout"
sudo -u nonRootUser /usr/bin/svn co svn+ssh://user@svnserver.com/path/to/repo /var/www/html | logger

logger "chown writeable folder"
chown www-data /var/www/html/writeableFolder

logger "restart apache"
/etc/init.d/apache2 restart | logger

exit 0

这是 sudo tail -n 40 /var/log/syslog 的输出

Mar 10 22:05:20 ubuntu logger: Begin rc.local startup script:
Mar 10 22:05:20 ubuntu logger: svn checkout
Mar 10 22:05:20 ubuntu logger: chown writeable folder

当然,它不会重新启动 apache2,因为它在 chown 上出错了。但是,我确实发现,如果我事先进行了结帐,并将 rc.local svn 命令设置为 svn update,它仍然不会运行 svn 命令,但会成功输出 apache2 restart。

当我手动运行这些相同的 svn 命令时,它们可以完美运行,但奇怪的是,在 rc.local 中它们不会产生任何输出到记录器,但 apache2 restart 会。

我还尝试使用 sudo -u 和不使用 svn co 和 svn update 运行。

如何让 svn 命令运行?完整结帐或更新。在这一点上,要么总比没有好!

4

2 回答 2

2

我不知道为什么sudo会在这里造成问题,但您也可以使用su,它的工作原理如下:

su nonRootUser -c "/usr/bin/svn co svn+ssh://user@svnserver.com/path/to/repo /var/www/html | logger"
于 2010-03-11T19:23:06.930 回答
0

尝试使用 chown 的完整路径。

/bin/chown
于 2010-03-11T18:22:29.760 回答