**需求: 需要在linux啟動的時候開啟某些服務
比如說: 開啟 zookeeper ,hdfs ,yarn服務**
注意: 因為這些服務需要用到ssh通訊所以要保證 ssh服務先啟動,並且網路服務啟動
方法一: 非最終解決方法
在/etc/rc.local中新增
如果不想將指令碼粘來粘去,或建立鏈結什麼的,
則: step1. 先修改好指令碼,使其所有模組都能在任意目錄啟動時正常執行;
step2. 再在/etc/rc.local的末尾新增一行以絕對路徑啟動指令碼的行;
但是通過自己輸出的日誌log發現會出現以下錯誤:
說明啟動後機器還沒有網路就開始執行,
解決方法: sleep 60s
如果沒有成功,睡眠60s然後重新執行。
最終成功達到想要的效果。
儘管解決了問題,但是不太穩定。無法確定什麼時候系統有網路 。
方法二:設定啟動級別,確保有網路之後執行指令碼。
linux 執行級別
執行級別就是作業系統當前正在執行的功能級別。這個級別從0到6 ,具有不同的功能。這些級別在/etc/inittab檔案裡指定。這個檔案是init程式尋找的主要檔案,最先執行的服務是那些放在/etc/rc.d 目錄下的檔案。
不同的執行級定義如下:(可以參考linux裡面的/etc/inittab)
預設的執行級,rhs用到的級別如下:
0:關機
1:單使用者模式
2:無網路支援的多使用者模式
3:有網路支援的多使用者模式
4:保留,未使用
5:有網路支援有x-window支援的多使用者模式
6:重新引導系統,即重啟
對各個執行級的詳細解釋:
0 為停機,機器關閉。
1 為單使用者模式,就像win9x下的安全模式類似。
2 為多使用者模式,但是沒有nfs支援。
3 為完整的多使用者模式,是標準的執行級。
4 一般不用,在一些特殊情況下可以用它來做一些事情。例如在筆記本 電腦的電池用盡時,可以切換到這個模式來做一些設定。
5 就是x11,進到x window系統了。
6 為重啟,執行init 6機器就會重啟。
(1)自己建立軟鏈結
將指令碼檔案***xname (不需要以.sh 結尾) 放到ect/init.d/
在ect/init.d/ ***xname(這裡的init.d 是軟連線指向 /etc/rc.d/init.d)
建立軟連線到 /etc/rc.d/rc3.d/ (3是你需要的優先等級 )
主要軟連線圖指令碼名稱要一致 (軟連線前面要加上sxx xx為1-100之間的數字)
(2)使用chkconfig管理
指令碼放入 init.d 目錄
指令碼在#! /bin/bash 下面要加上注釋
# chkconfig: 2345 90 10
# description: redis is a persistent key-value database
(親測不加chkconfig 這行注釋會報錯。很多地方都說兩行都要加。但是沒有夾description這一行我沒加。沒有報錯。當然加還是加上比較好 )
2345 是啟動等級 , 90 是啟動優先級別 10 是關閉優先級別。
chkconfig –add ***x(服務名)
然後設定。
chkconfig –level 35 ***x (服務名) on
修改服務的預設啟動等級 35啟動登記為 3,5
總結: 第一種方法適合一些對先提條件,系統狀態沒什麼要求的操作。
第二種方法可以根據自己服務的情況選擇需要的執行級別達到自己的需求。
參考:
linux開機服務自啟
有時候我們需要linux系統在開機的時候自動載入某些指令碼或系統服務,主要用三種方式進行這一操作 ln s 在 etc rc.d rc d目錄中建立 etc init.d 服務的軟鏈結 代表0 6七個執行級別之一 chkonfig 命令列執行級別設定 ntsysv 偽圖形執行級別設定 注意 這三種方...
linux服務 程序開機自啟
一 etc rc.local 在檔案最後一行新增要執行程式的全路徑。如mongodb tomcat jenkins 放在tomcat中啟動只需要新增tomcat啟動指令碼 sleep 3 sleep 3 二 註冊系統服務 chkconfig add 服務名 chkconfig leve 啟動級別 服...
Linux優化開機自啟服務
root localhost cat etc redhat release centos release 6.5 final 必須保留的啟動服務 1.crond 定時任務服務 2.network 網路服務 3.rsyslog 日誌服務 4.sshd 遠端鏈結服務 5.sysstat 系統監控服務 涉...