設置Linux自啟服務以及優先級


一、 啟動優先級

今天有一台服務器沒有正常啟動,原因是有一個服務沒有啟動起來,因為A服務需要B服務啟動之后才能正常啟動,所以需要調整A,B服務的啟動順序。在網上查找了一些資料,總結了一下,以備以后需要。

    要知道服務的啟動順序,就需要先知道服務如何啟動的。linux有7個運行級別,用戶可選擇不同的運行級別。進入/etc/rc.d/目錄,可查看到對應從rc0.d到rc6.d等7個目錄,這些目錄即對應7個級別。

下面有這么幾個目錄值得注意:
rcS.d rc0.d rc1.d ... rc6.d ,
(0,1... 6 代表啟動級別: 0代表停止,1代表單用戶模式,2-5代表多用戶模式,6代表重啟)

進入rc3.d目錄,可看到各種以K或者S開始的服務,K表示啟動,S表示停止,而后面的數字就表示啟動順序。我們以熟悉的network服務為例,這里只是個鏈接,其實還是指向/etc/init.d/network,其啟動值為27。

  在rc?.d中的都是鏈接文件,鏈接在/etc/init.d中的腳本。

 

在腳本中,有#chkconfig 一行,這一行描述了當設置為自啟動的時候,這個腳本的啟動優先級和關閉的時候的關閉優先級。

       例如,我們看network腳本:


 

 

我們可以看出,network腳本在被設置為自啟動的時候,只在2345級里會自啟動,啟動優先級是10,關閉優先級是90。所以,如果要設置自己腳本自動啟動,那么也需要有這一行。

設置自動啟動:chkconfig --add <文件名>

然后在/etc/rc.d/rc5.d中可以看到我腳本的鏈接。

 ----------------------------------------------------------------分---------------------------------------------------------------------------割---------------------------------------------------------------------------------------線--------------------------------------------------------------------------------

如何將start.sh stop.sh restar.sh啟動、關閉、重啟放到一個文件內制作成自啟服務

#!/bin/bash

cd "/usr/local/proxy-server-0.1/bin"

case "$1" in

start)
./startup.sh
;;
stop)
./stop.sh
;;
restart)
./stop.sh
./startup.sh
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac

 

1、創建文本

vim /etc/init.d/proxyserver

 

2、將以上內容復制粘貼到該文本內(幾個修改格式),記得修改(cd "路徑")我的start.sh 和stop.sh就在(/usr/local/proxy-server-0.1/bin)這個路徑

 

 

3、保存文本,賦予可執行權限

chmod +x proxyserver

 

到這里就可以使用,如果執行時出現錯誤,除了檢查路徑,名稱,也有可能是格式不正確,與截圖保持一致

service proxyserver stop  #停止程序

service proxyserver start  #開啟程序

如何配置開機自啟,繼續往后走

 

二、把啟動腳本設置為啟動項

1、查看當前系統啟動級別:sudo runlevel 

 

2、進入對應的系統啟動級別文件夾,我的是rc5.d,建立軟鏈接,鏈接到/etc/init.d/下的<文件名>

 

    1. cd /etc/rc5.d/
    2. sudo ln -vsf /etc/init.d/proxyserver  S98proxyserver
    3. ln -vsf(-v 顯示鏈接過程 -s 軟鏈接 -f 強制鏈接) 鏈接的文件位置 自己取得軟連接名

說明一下:命名規則是有規定的,開頭必須大寫S,后面跟的數字98,是你設定的啟動序號,即優先級,后面名字無限定。

 3:看一下是否有這鏈接:

ls -alh | grep S98proxyserver

三、將自啟命令寫到腳本內(具體的文件名稱根據自己實情操作)

#!/bin/bash
#chkconfig: 2345 81 96
#description: Starttomcat

第一行,告訴系統使用的shell,所有的shell腳本都是這樣。
第二行,chkconfig后面有三個參數2345,81和96告訴chkconfig程序,需要在/etc/rc.d/rc2.d~rc5.d目錄下,創建名字為 S81tomcatstart的文件連接,連接到/etc/rc.d/init.d目錄下的的tomcatstart腳本。第一個字符是S,系統在啟動的時候,運行腳本tomcatstart,就會添加一個start參數,告訴腳本,現在是啟動模式。
同時在/etc/rc.d/rc0.d和/etc/rc.d/rc6.d目錄下,創建名字為K96tomcatstart的 文件連接,第一個字符為K,在關閉系統的時候,會運行tomcatstart,添加一個stop參數,告訴腳本,現在是關閉模式。
注意上面的三行中:第二、第三行是必須的,否則在運行chkconfig --add tomcatstart時,會報錯。

 

 

 

 

添加服務前,可以查看這個內容《服務不支持 chkconfig 的解決辦法

1、添加服務(什么也不展示表示成功,如果沒成功從第二開始看,缺少哪一步)

chkconfig --add proxyclient

 

2、顯示服務列表

chkconfig --list

 

▲:如果看到mysql的服務如上圖所示2,3,4,5都是開的話則成功,默認級別是2345

如果是關,則鍵入命令開啟

chkconfig --level 2345 proxyswevwe on

3、重啟服務器

reboot

 

命令說明:

--add:增加所指定的系統服務,讓chkconfig指令得以管理它,並同時在系統啟動的敘述文件內增加相關數據;
--del:刪除所指定的系統服務,不再由chkconfig指令管理,並同時在系統啟動的敘述文件內刪除相關數據;
--level<等級代號>:指定讀系統服務要在哪一個執行等級中開啟或關畢。

 

 

 

原文地址:http://blog.51cto.com/zhengdzy/2108879

https://blog.csdn.net/m0_37673307/article/details/81806962


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM