daemon是什麼? 在背景執行的process 會提供某種服務, 不需要standard in/out

daemon 就是 開啟之後會在背景執行的process 提供某種服務, 不需要standard in/out

系統服務
http://120.105.184.250/peiyuli/network-3/%E7%B3%BB%E7%B5%B1%E6%9C%8D%E5%8B%99.htm

Daemon
Daemon 是一個常駐記憶體的背景行程,通常負責系統中的某個服務,協助系統接受來自使用者的要求,加以處理。依據服務的啟動與管理方式,可以將 daemon 分為兩大類:

․stand alone:係指 daemon 啟動之後,就常駐記憶體且持續佔用系統資源,但優點是當有要求來的時候,可以快速的回應。常見的此類 daemon 有 httpd (WWW)、iptables (firewall)、smbd (SAMBA)、named (DNS) 等。
․super daemon:此類 daemon (即 inetd 或後來推出的 xinetd) 是總管許多服務的程式。當有要求送來時,由 xinetd 負責接收,然後根據要求封包的內容 (IP 與 port), 將此要求轉送給實際負責的服務程式來處理,例如 wu-ftp、telnet、pop3 等。此 daemon 最大的優點,就是不會長佔系統資源 (因為實際負責的服務程式處在 sleep 狀態),但相對的,反應時間便會比較慢 (因為要花時間喚醒服務程式)。

Super daemon 的處理模式又可分為兩種:
․single-threaded:要求的處理方法是每種服務一次只處理一個要求,前一個要求未處理完之前,後面的要求就必須排隊等。
․multi-threaded:所有的要求都直接轉遞給實際負責的服務,因此每種服務可能會同時處理多個要求。

服務的對應通訊埠

不同的服務由不同的執行程式來提供,所使用的監聽通訊埠 (listen port) 也有所差別。例如在瀏覽器上輸入的網址 http://www.thit.edu.tw 與 ftp://www.thit.edu.tw 即是兩種不同的服務要求,但如何得知該服務是使用哪一個通訊埠呢?Linux 系統上用來存放服務與通訊埠對應資訊的地方就是 /etc/services:

daemon 的所在位置
daemon 是一支服務程式,當然有所謂的設定檔來協助相關 daemon 的啟動,為了讓使用者可以很輕易的啟動 daemon,Linux 的主要發行版都採用較有親和力的方式,即利用 shell script 檔。daemon 的 shell script 檔的存放位置,會因本身的 stand alone 或 super daemon 屬性而有所不同:
․stand alone:存放在目錄 /etc/init.d (實際上是 /etc/rc.d/init.d),幾乎所有利用 rpm 安裝的套件之啟動 script 都安置在此。
․super daemon:xinetd 本身是一支 stand alone 的 daemon,它的啟動 script 也是放在目錄 /etc/init.d,但附屬在這個 daemon 上的服務之相關設定則存放於檔案 /etc/xinetd.conf 與目錄 /etc/xintd.d 底下的檔案中。

daemon 的啟動方式

․啟動 stand alone 服務的方式:

語法:/etc/init.d/script command
service script command (Red Hat Linux 系統提供)
script 係指位於 /etc/init.d 底下的 script 檔名
command 包含 start、stop、restart 等

e.g.,

# /etc/init.d/httpd start 啟動 WWW 服務
# service vsftpd restart 關閉再啟動 FTP 服務

․啟動 super daemon 服務的方式:

語法:/etc/init.d/xinetd command
command 包含 start、stop、restart 等

e.g.,

# /etc/init.d/xinetd start 啟動 xinet 服務

One thought on “daemon是什麼? 在背景執行的process 會提供某種服務, 不需要standard in/out

  1. Pingback: [Linux] Kernel Thread | V+

發表迴響

Copy Protected by Chetan's WP-Copyprotect.