У нас есть индивидуальная программа (test
), чтобы использовать следующую структуру, например
myapp
myapp\version1\
myapp\version1\test
myapp\version1\logs\..
myapp\version2\test
myapp\version2\logs\..
myapp\running -> version1
И мы так бегаем
./mysqpp/running/test
В running
символическая ссылка в настоящее время указывает на версию 1, мы хотим изменить символическую ссылку на версию 2, когда программа запущена, будет ли какой-либо побочный эффект?
(Мы не хотим прерывать текущую службу, просто хотим, чтобы при следующем перезапуске сервера использовалась версия 2)
От четких зависит:
Само запущенное в данный момент приложение не будет затронуто напрямую, поскольку оно загружается в оперативную память и поддерживается своим индексным дескриптором на диске. Так что это нормально.
Проблема в том, что если myapp/version1/test
обращается к некоторым файлам по пути и использует myapp/running/logs/datafile
для доступа к файлу. И это тоже проблема, только если приложение открывает файл после изменения символической ссылки. Если это произойдет, он, конечно, внезапно откроет файлы в myapp/version2
.
Такой короткий ответ: если myapp/version1
имеет какое-либо упоминание по имени на «работает», я бы не стал менять символическую ссылку.
Примечание. Чтобы все изменилось при следующей перезагрузке, вы можете добавить какой-нибудь скрипт загрузки init.d или какую-нибудь штуку cron @boot.