Init-Script

AWS Linux 上 cloud-init-local 的執行順序

  • June 21, 2017

我正在嘗試創建一個新的 EC2 實例,並在創建時向實例提供使用者數據。我的使用者數據執行一些 bash 命令來修改另一個應用程序 (myApplication) 的屬性文件的參數。目的是在 myApplication 啟動之前修改它的配置。myApplication 配置為從 /etc/init.d 開始。

我基本上是在嘗試做這裡描述的事情

我看到 /etc/init.d/cloud-init-local 的 chkconfig 配置設置為優先級 50。我假設這是執行我的使用者數據腳本的機制。

myApplication 也配置了 chkconfig,但優先級為 90。計劃是在 myApplication 啟動之前執行使用者數據。

但是,這不是我正在經歷的。我可以在 cloud-init-output.log 文件中看到我的使用者數據確實被執行了,但是 myApplication 已經啟動了。

我假設我的使用者數據腳本由 /etc/init.d/cloud-init-local 執行是錯誤的嗎?我對引導順序行為的期望是否不正確?

任何幫助表示讚賞,謝謝!

我認為您遇到了系統錯誤。(他們認為這是一個好主意。)特別是為了提高導入的 sysv 腳本的啟動速度,它們並行執行,除非您配置 LSB 依賴項,sysv init 會忽略這些依賴項。

解決這個問題的方法是

  1. 將兩個初始化腳本都轉換為具有 systemd 依賴項的 systemd 腳本。
  2. 將依賴項添加到兩個初始化腳本。
  3. 選擇另一個不嘗試比你更聰明的初始化系統。

引用自:https://unix.stackexchange.com/questions/372592