我们有一个自定义程序(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)
答案1
明确取决于:
当前正在运行的应用程序本身不会受到直接影响,因为它已加载到 RAM 中并由磁盘上的 inode 支持。所以没问题。
问题是,如果myapp/version1/test
通过路径访问某些文件并使用myapp/running/logs/datafile
来访问该文件。而且,这也只有在应用程序在符号链接更改后打开文件时才会出现问题。如果这样做,它当然会突然打开 下的文件myapp/version2
。
简短的回答是:如果myapp/version1
名称中有任何对“运行”的引用,我就不会更改符号链接。
注意:因此,在下次重启时要进行更改,您可以设置一些 init.d 启动脚本或 cron @boot 之类的东西。