關於 /var/lock/subsys 目錄

關於 /var/lock/subsys 目錄

在系統關閉過程中會去檢查 /var/lock/subsys 下的文件,並開始關閉系統上服務,如果某個運行的服務在 /var/lock/subsys 下也發現有名稱相應的文件。則系統關閉該服務時就會使用 /etc/init.d/daemon_name stop 來關閉這個服務,相反的話就直接 kill 掉該進程。

透過察看 /etc/rc.d/init.d 下的腳本,可以發現每個服務操縱時都會去查看 /var/lock/subsys 下是否有名稱相應的文件。由此可以推測 /var/lock/subsys 和 服務的啟動、停止有關。

藍森林的討論內容:

請教:RH9里/var/lock/subsys目錄的作用

很多程序需要判斷是否當前已經有一個實例在運行,這個目錄就是讓程序判斷是否有實例運行的標誌,比如說xinetd,如果存在這個文件,表示已經有 xinetd在運行了,否則就是沒有,當然程序裡面還要有相應的判斷措施來真正確定是否有實例在運行。通常與該目錄配套的還有/var/run目錄,用來 存放對應實例的PID,如果你寫腳本的話,會發現這2個目錄結合起來可以很方便的判斷出許多服務是否在運行,運行的相關信息等等。

請教:RH9里/var/lock/subsys目錄的作用

我說的是判斷是否有實例正在運行,並註明了程序內部需要另行確定是否真正有實例在運行。實際上,判斷是否上鎖就是判斷這個文件,所以文件存在與否也就隱含了 是否上鎖。而這個目錄的內容並不能表示一定上鎖了,因為很多服務在啟動腳本裡用touch來創建這個加鎖文件,在系統結束時該腳本負責清除鎖,這本身就不 可靠(比如意外失敗導致鎖文件仍然存在),我在腳本裡一般是結合PID文件(如果有PID文件的話),從PID文件裡得到該實例的PID,然後用ps測試 是否存在該PID,從而判斷是否真正有這個實例在運行,更加穩妥的方法是用進程通訊了,不過這樣的話單單靠腳本就做不到了

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s