1. 程式人生 > >/var/lock/subsys作用

/var/lock/subsys作用

rc.d init 加鎖 殺死 運行 2個 一個 sys 測試

/var/lock/subsys作用

關於/var/lock/subsys目錄 總的來說,系統關閉的過程(發出關閉信號,調用服務自身的進程)中會檢查/var/lock/subsys 下的文件,逐一關閉每個服務,如果某一運行的服務在/var/lock/subsys下沒有相應的選項。在 系統關閉的時候,會像殺死普通進程一樣殺死這個服務。 通過察看/etc/rc.d/init.d下的腳本,可以發現每個服務自己操縱時都會去查看/var/lock/subsys下相應的服務。 很多程序需要判斷是否當前已經有一個實例在運行,這個目錄就是讓程序判斷是否有實例運行的標誌,比如說xinetd,如果存在這個文件,表示已經有xinetd在運行了,否則就是沒有,當然程序裏面還要有相應的判斷措施來真正確定是否有實例在運行。通常與該目錄配套的還有/var/run目錄,用來存放對應實例的PID,如果你寫腳本的話,會發現這2個目錄結合起來可以很方便的判斷出許多服務是否在運行,運行的相關信息等等。

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

/var/lock/subsys作用