長鏈接轉化成短鏈接工具日照網站優(yōu)化公司
總的來說,系統(tǒng)關閉的過程(發(fā)出關閉信號,調用服務自身的進程)中會檢查/var/lock/subsys下的文件,逐一關閉每個服務,如果某一運行的服務在/var/lock/subsys下沒有相應的選項。在系統(tǒng)關閉的時候,會像殺死普通進程一樣殺死這個服務。通過察看/etc/rc.d/init.d下的腳本,可以發(fā)現每個服務自己操縱時都會去查看/var/lock/subsys下相應的服務。
[root@vm1 scripts]# ll /var/lock/subsys
total 0
-rw-r--r-- 1 root root 0 Jul 26 2023 network
[root@vm1 scripts]#
很多程序需要判斷是否當前已經有一個實例在運行,這個目錄就是讓程序判斷是否有實例運行的標志,比如說xinetd,如果存在這個文件,表示已經有xinetd在運行了,否則就是沒有,當然程序里面還要有相應的判斷措施來真正確定是否有實例在運行。通常與該目錄配套的還有/var/run目錄,用來存放對應實例的PID,如果你寫腳本的話,會發(fā)現這2個目錄結合起來可以很方便的判斷出許多服務是否在運行,運行的相關信息等等。
?說明:有這個flag,啟動腳本的一個思想。停掉的時候,再刪除掉。
說明:/var/run/rpcbind*里面是pid文件。
實際上,判斷是否上鎖就是判斷這個文件,所以文件存在與否也就隱含了是否上鎖。而這個目錄的內容并不能表示一定上鎖了,因為很多服務在啟動腳本里用touch來創(chuàng)建這個加鎖文件,在系統(tǒng)結束時該腳本負責清除鎖,這本身就不可靠(比如意外失敗導致鎖文件仍然存在),我在腳本里一般是結合PID文件(如果有PID文件的話),從PID文件里得到該實例的PID,然后用ps測試是否存在該PID,從而判斷是否真正有這個實例在運行,更加穩(wěn)妥的方法是用進程通訊了,不過這樣的話單單靠腳本就做不到了。