如何制作LINUX服務腳本

如何制作一個Linux啟動服務

? ? ? ? ?Linux在啟動的時候都會跑很多系統自帶的服務腳本,來控制系統服務的開啟和關閉。這些服務是系統自帶的,我們可以查看這些服務及其對應的腳本(ls?/etc/init.d/)。這些服務有獨立服務,也有依賴服務,依賴服務有被依賴服務和依賴別的服務。今天我們就來看看怎么來制作一個系統獨立服務,方便我們以后需要自己手動寫服務腳本的時候做個參考!申明:此次實驗服務腳本不帶任何系統服務功能,只是一個測試用的沒有實際內容的腳本,我們用它來了解系統啟動服務的整個流程和相應的理論知識!

8-3

 

1、進入/etc/init.d/目錄下(系統啟動的服務都放在這個目錄下,所以我們自己做的服務腳本也放在這里),編輯一個測試服務腳本(vim testsrv)。

8-1

注釋:進入vim編輯器

服務腳本有三行格式是必須要寫上的:#!/bin/bash,#/chkconfig,#description。

# chkconfig :? runlevels? ss? kk (runlevels:表示系統啟動的模式(0-6),一般用3和5,;ss:表示開始運行的次序,kk:表示關閉程序的次序,- :表示七種模式都不啟動)

第一行:首先說明腳本是在什么shell下運行:bash shell

第二行:寫出我們服務腳本必須要有的內容:指明系統啟動模式、服務運行及關閉次序

第三行:腳本描述,此處的腳本為測試腳本

這三行寫完后,我們就可以寫服務腳本的正文了,寫出此服務腳本的工作內容。

 

2、在這里我就用一個case語句來完成我們測試腳本的開啟、關閉、以及狀態檢測。

8-2

source /etc/init.d/functions:我們把系統腳本functions寫入我們的腳本是方便我們下面調用它里面的action,關于action我們下面再說。

/var/lock/subsys/testsrv:系統開啟和關閉的過程中,會去檢查/var/lock/subsys下的文件,逐一關閉每個服務。所以我們可以用來判斷文件是否存在,進而判斷服務的狀態。

action:關于action,我們可以來查看functons文件中的action的作用,如下圖1所示:less functions? /action,我們可以看到定義了action的作用是打印出相關操作的結果并用特定的顏色顯示;圖2為我們很好的展示了系統的自帶的functions中action的作用,打印出來的結果直觀而且很好看,我們的實驗中就可以直接調用functions中的action功能。

8-5

8-4

 

3、腳本編輯完成,加上執行權限,測試腳本的功能。

chmod +x /etc/init.d/testsrv ,現在我們已經可以直接把這個腳本拿過來用了,我們現在來執行一下這個腳本,如下圖所示:服務的開啟,關閉以及狀態查詢都是正常的,并且服務開啟后也會在相應的目錄(/var/lock/subsys/)下生成testsrv文件。但是,現在的腳本我們還沒有把它添加到系統真正的服務列表里去,我們可以用chkconfig –list來查看,所以相應的/etc/rc5.d/下面也就還沒有testsrv相應的文件。接下來我們就要把這個服務腳本加到服務列表里去,讓它跟其他的系統啟動服務一樣正常的工作。

8-6

 

4、添加服務,并驗證服務的功能

8-7

如上圖所示:用 chkconfig –add testsrv 命令添加服務到系統服務的列表里,然后用?chkconfig –list testsrv 檢測服務的相關設置都是正確的(3和5模式下為on)。

testsrv 服務添加以后我們應該就可以從相應的目錄下看到我們設置的服務啟動順序,如下圖所示:可以看到s95打頭的文件。

8-8

我們也可以后續用命令更改服務的啟動和關閉:chkconfig –level 3/5 testsrv off ,這樣我們可以控制此服務需不需要在3和5模式下運行,當然我們也可以直接更改服務的腳本里面的設置,順帶驗證我們腳本功能的完整性,如下圖所示:我們把testsrv的3和5模式下關閉運行,那么就會在相應的文件中生成K03打頭的文件,說明,腳本沒有為問題。

8-9

 

5、至此,我們自己寫的服務腳本已經全部測試完畢。那么系統在下次重啟的時候就會在啟動列表里展示此服務!OK!

8-10

 

? ? ? ? 我們自己寫的服務一定要注意腳本的格式和內容的準確定,不能有BUG和格式問題。在添加服務的時候也要注意,測試好后再去使用。雖然都是高手,但是避免出現很多系統崩潰的問題。

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/98053

(0)
李登峰李登峰
上一篇 2018-05-10
下一篇 2018-05-10

相關推薦

  • 第五周 軟件包管理命令、制定定時任務和sed命令介紹

    1. RPM包管理 1.1 RPM簡介 RPM類似于Windows系統中.exe的軟件安裝程序,用戶可以使用它自行安裝和管理Linux上的應用程序和系統工具; RPM軟件包文件都是以.rpm為后綴,一般采用這樣的命名格式:軟件包名稱 – 版本號 – 修正版 . 硬件平臺 . rpm。 1.2 RPM命令的使用方法 查詢:rpm {-q…

    2018-07-02
  • 相信過程-馬哥教育

    IT工程師工作和學習都是比較枯燥的,過于目標化忽略了過程本身并不適合我,如果我來這里能使我全心全意投入到一段學習當中,我覺得來這里目標就達到了。其他的事情自然會水到渠成。 大家共勉!

    2018-07-21
  • 計算機原理與Linux基礎

    計算機的組成及功能 1、其實計算機的組織分為內部設備和外部設備, 內部設備: ? ? ? ? CPU:運算器、寄存器、緩存 ? ? ? ? 存儲器:內存,RAM(Random Access Memory) ? ? ? ? 控制器:控制器是整個計算機系統的控制中心,它指揮計算機各部分協調地工作,保證計算機按照預先規定的目標和步驟有條不紊地進行操作及處理。 外部…

    Linux筆記 2018-05-13
  • 正則表達式入門及應用 以grep sed為例

      ◆ 正則表達式正則表達式是由一類特殊字符及文本字符所編寫的模式,其中有些字符(元字符) 不表示字符字面意義,而表示控制或通配的功能。 它與shell的通配符既有相似也有不同。 ※ 轉義符\?可將帶有命令性質的符號作為一般字符使用。 正則表達式中,常用以下元字符來代表特定字符的集合: ◆ 分組 ??? 1、正則表達式中,可以用\(\) 將一個或多…

    2018-04-15
  • Linux運維命令以及概念整理總結(3)

    1.用戶權限設置以及更改
    2、特殊權限suid、sgid、sticky
    3、ACL權限設置
    4、cat命令、head命令、tail命令、cut命令、paste命令
    5、sort命令、uniq命令、diff命令

    2018-04-14
  • 進程和計劃任務

    進程和計劃任務 一、 進程 程序:是在磁盤上的一個文件,只要不去運行它就是一個靜態文件,不占用內存空間; 進程:process是一個動態的概念,只有當用戶將程序運行起來時才會有進程,當進程執行完畢時,就會從內存中刪除。 線程:thread?? pstree –p 命令顯示中{}中的即為線程。 一個進程會對應一個程序,而一個程序可能會對應多個進程。 一個進程里…

    2018-05-05
欧美性久久久久