Service
Chkconfig 忽略服務依賴
所以我有這兩個文件:
/etc/init.d - service1 - service2
service2
就好像:#!/bin/sh # chkconfig: 2346 95 45 # description: desc # processname: service2 ### BEGIN INIT INFO # Provides: service2 # Required-Start: service1 # Required-Stop: service1 # Default-Start: 2 3 4 6 # Default-Stop: 0 6 # Short-Description: desc # Description: long desc ### END INIT INFO export JAVA_HOME="/opt/java/jre" export PATH=$JAVA_HOME/bin:$PATH /opt/do/something.sh $*
我希望在正常啟動和重啟
service2
時在service1
結束後啟動(大約需要 12 分鐘,它是一個應用程序伺服器),但它們幾乎同時啟動,這會中斷service2
。為什麼服務系統會忽略我設置的依賴?有什麼不對?有沒有辦法檢查引導順序執行的正確性?
我在 RHEL7 上,這兩項服務都已成功添加
chkconfig --add <service_name>
謝謝
正如 Michael Hampton 在評論中提到的,您應該將舊式 init 腳本轉換為 systemd units。
但是,您可能有理由繼續使用舊式 SysVinit 腳本。
您的腳本中可能存在一個問題:我似乎記得曾經有一個要求,即行前不能有空
### BEGIN INIT INFO
行。我在目前的 LSB 標准文件中找不到該要求,但我認為我曾經通過刪除 INIT INFO 部分之前的空白行解決了類似的問題。如果我的記憶是正確的,這可以解釋為什麼不遵循您的依賴關係。
另外,SysVinit 腳本中的依賴不一定指實際的服務,而只是指腳本本身:RHEL7
systemd
會在腳本完成service2
後立即啟動service1
腳本,而不管實際啟動的服務程序service1
是否完成啟動向上與否。因此,如果您的服務需要很長時間才能啟動,則腳本應明確等待服務完全啟動後再退出。