Unix

程序執行時更改符號連結,有什麼副作用嗎?

  • March 20, 2013

我們有一個自定義程序 ( test) 來使用以下結構,例如

myapp
myapp\version1\
myapp\version1\test
myapp\version1\logs\..
myapp\version2\test
myapp\version2\logs\..
myapp\running -> version1

我們就這樣跑

./mysqpp/running/test

symlink目前指向version1,我們想在程序執行的時候把runningsymlink改成version2,會不會有什麼副作用?

(我們不想中斷目前服務,只想下次重啟伺服器時,使用的是version2)

一個明確的取決於:

目前執行的應用程序本身不會受到直接影響,因為它被載入到 RAM 中並由磁碟上的 inode 支持。所以沒關係。

問題是,如果myapp/version1/test通過路徑訪問某些文件並用於myapp/running/logs/datafile訪問該文件。如果應用程序在更改符號連結後打開文件,這也是一個問題。如果這樣做,它當然會突然打開myapp/version2.

如此簡短的回答:如果myapp/version1有任何關於“執行”的名稱引用,我不會更改符號連結。

注意:所以在下次重新啟動時進行更改,您可以放置​​一些 init.d 啟動腳本或 cron @boot 的東西。

引用自:https://serverfault.com/questions/489316