天天看點

《嵌入式 Linux應用程式開發标準教程(第2版)》——2.3 Linux系統服務

本節書摘來異步社群《嵌入式 linux應用程式開發标準教程(第2版)》一書中的第2章,第2.3節,作者:華清遠見嵌入式教育訓練中心,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

嵌入式 linux應用程式開發标準教程(第2版)

init程序的作用是啟動linux系統服務(也就是運作在背景的守護程序)。linux的系統服務包括兩種,第一種是獨立運作的系統服務,它們常駐記憶體中,自開機後一直運作着(如httpd),具有很快的響應速度;第二種是由xinet設定的服務。xinet能夠同時監聽多個指定的端口,在接受使用者請求時,它能夠根據使用者請求的端口不同,啟動不同的網絡服務程序來處理這些使用者請求。是以,可以把xinetd看作一個啟動服務的管理伺服器,它決定把一個客戶請求交給哪個程式處理,然後啟動相應的守護程序。下面分别介紹這兩種系統服務。

獨立運作的系統服務的啟動腳本都放在目錄“/etc/rc.d/init.d/”中。如筆者系統中的系統服務的啟動腳本有:

[root@localhost rc3.d]# ls /etc/rc.d/rc3.d

k02networkmanager k35winbind k89netplugd s10networ s28autofs s95anacron

k05saslauthd k36lisa k90bluetooth s12syslog s40smartd s95atd

k10dc_server k45named k94diskdump s13irqbalance s44acpid s97messagebus

k10psacct k50netdump k99microcode_ctl s13portmap s55cups s97rhnsd

…<code>`</code>

可以看到,每個對應的服務都以“k”或“s”開頭,其中的k代表關閉(kill),其中的s代表啟動(start),使用者可以使用指令“+start|stop|status|restart”來對相應的服務進行操作。

在執行完相應的rcn.d目錄下的腳本檔案後,init最後會執行rc.local來啟動本地服務,是以,使用者若想把某些非系統服務設定為自啟動,可以編輯rc.local腳本檔案,加上相應的執行語句即可。

另外,讀者還可以使用指令“service+系統服務+操作”來友善地實作相應服務的操作,如下所示:

xinetd管理系統中不經常使用的服務,這些服務程式隻有在有請求時才由xinetd服務負責啟動,一旦運作完畢服務自動結束。xinetd的配置檔案為“/etc/xinetd.conf”,它對xinet的預設參數進行了配置:

service tftp

{

    socket_type = dgram (資料報格式)

    protocol   = udp (使用udp傳輸)

    wait      = yes

    user      = root

    server     = /usr/sbin/in.tftpd

    server_args  = -s /tftpboot

    disable    = yes (不啟動)

    per_source  = 11

    cps       = 100 2

    flags      = ipv4

}<code>`</code>

除了在本節中提到的service指令之外,與系統服務相關的指令還有chkconfig,它也是一個很好的工具,能夠為不同的系統級别設定不同的服務。

(1)chkconfig --list(注意在list前有兩個小連線):檢視系統服務設定。

示例:

[root@localhost xinetd.d]# chkconfig --list|grep ntpd

ntpd         0:關閉 1:關閉 2關閉 3:關閉 4:關閉 5:關閉 6:關閉

[root@localhost ~]# chkconfig --level 3 ntpd on

[root@localhost ~]# chkconfig --list|grep ntpd

ntpd         0:關閉 1:關閉 2:關閉 3:打開 4:關閉 5:關閉 6:關閉<code>`</code>

另外,在2.1.1節系統指令清單中指出的setup程式中也可以設定,而且是圖形界面,操作較為友善,讀者可以自行嘗試。

繼續閱讀