如何制作Linux服務腳本

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/98033

(1)
JllbcJllbc
上一篇 2018-05-10
下一篇 2018-05-10

相關推薦

  • Linux發行版的基礎目錄名稱命名法則及功用規定

    對于linux來說,普天之下莫非王土,所有的文件必須從根開始。磁盤有多個分區,如何跟根建立關系?我們把磁盤上一個分區定義為根分區,那么其它分區被根分區奴役。其它分區掛載(關聯)到根分區上。 所有linux命名必須遵守,FHS,:Filesystem Hieracchy standard.文件系統層級機構標準。定義根下必須有哪些目錄,哪些可以沒有,不同發行版所…

    2018-06-27
  • 第二周筆記

    ### 4 月2日筆記 – #### IO重定向“`I:input指的是標準輸入 描述符用0表示O:output指的是標準輸入 描述符用1表示標準錯誤 描述符用2表示“`一般文件或者命令的標準輸入是指的鍵盤,標準輸出是值得終端窗口。我們用重定向來改變他們的方向大于號> 表示標準輸出:把輸出內容定向到一個文件中&#82…

    Linux筆記 2018-04-01
  • 第三周

    CMD=”hostname”echo $CMDhostname$CMDcentos6.com 全局配置文件/etc/profile 定義變量的/etc/profile.d/*.sh /etc/profile.d/env.sh在這該/etc/bashrc 放別名個人配置文件~/.bash_profile 定義變量的~/.bashrc.b…

    Linux筆記 2018-04-15
  • liunx 創建用戶、文件權限及管理

      創建用戶     修改和刪除組 更改組密碼 更改和查看組成員 文件權限:文件屬性 文件屬性操作 修改文件的屬性和屬組 文件權限   文件權限 八進制數字: 修改用戶權限:   新建文件和目錄的默認權限:               &n…

    Linux筆記 2018-04-08
  • iptables實現局域網訪問外網

    1.環境: Linux pc一臺,兩個網卡: eth0:ip ?192.168.0.106gateway 192.168.0.1dns 192.168.0.1eth1:ip 172.24.8.3 windows一個網卡: ip ?172.24.8.4 gateway 172.24.8.3 2.Linux ?pc的eth0可以訪問外網,eth1與windows…

    Linux筆記 2018-07-17
  • shell編程基礎二

    profile bashrc 混合命令行展開

    2018-04-11
欧美性久久久久