这是基于 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 命令运行?完整结帐或更新。在这一点上,要么总比没有好!