Вот мой rc.local для экземпляра amazon ec2 с автоматическим масштабированием на основе ubuntu: (обратите внимание, что имена пользователей, домены и пути были изменены в целях безопасности)
logger "Begin rc.local startup script:"
logger "svn checkout"
sudo -u nonRootUser /usr/bin/svn co svn+ssh://[email protected]/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.
Эти же команды svn отлично работают, когда я запускаю их вручную, хотя странно, что в rc.local они не производят никакого вывода для регистратора, а перезапуск apache2 делает.
Я также пробовал запускать svn co и svn update как с sudo -u, так и без него.
Как мне запустить команду svn? Либо полная проверка, либо обновление. На данный момент либо было бы лучше, чем ничего!