在程序运行时更改符号链接,有什么副作用吗?

在程序运行时更改符号链接,有什么副作用吗?

我们有一个自定义程序(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 之类的东西。

相关内容