以下是基于ubuntu的autoscaling 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更新,它仍然不会运行svn命令,但会成功输出apache2 restart。
当我手动运行它们时,这些相同的svn命令工作正常,很奇怪,在rc.local中它们不会产生任何输出到logger但apache2重新启动的功能。
我也尝试使用sudo -u和不运行svn co和svn更新。
如何运行svn命令?完整的结账或更新。在这一点上,要么总比没有好!
答案 0 :(得分:2)
我不知道为什么sudo
会在这里造成问题,但您也可以使用su
,其效果如下:
su nonRootUser -c "/usr/bin/svn co svn+ssh://user@svnserver.com/path/to/repo /var/www/html | logger"
答案 1 :(得分:0)
尝试使用chown的完整路径。
/bin/chown