daemon與service

系統爲了某些功能必須要提供一些服務 (不論是系統本身還是網絡方面),這個服務就稱爲 service 。

但是 service 的提供總是需要程序的運行 所以達成這個 service 的程序我們就稱呼他爲 daemon 

daemon的主要分類

     可獨立啓動的 stand alone daemon 來管理服務

          啓動後 一直佔用內存與系統資源  客戶端請求時 響應速度快

                              http

     透過一隻 super daemon 來統一管理服務 xinetd

          只有super daemon常駐內存

          沒有客戶端請求時 各項服務都是爲啓動狀態

          有請求時 super daemon才喚醒相對應的服務 加載內存等資源

          請求結束後 被喚醒的服務再次關閉並釋放資源

          具有安全控制的機制 類似網絡防火牆的功能

                             telnet

          super daemon 有兩種處理模式

          wKioL1gsC6-iZ9cuAAAiu7AMrIo524.gif-wh_50

     daemon工作形態的類型

     signal-control     客戶端需求進來 立即啓動去處理 比如打印機 cupsd

     interval-control   每隔一段時間主動運行某項工作 crond

     daemon命名規則

          服務名後+d 例如 cron服務 他的程序就是 crond 這個daemon

服務(daemon)與端口的對應

[root@www wanjiadi]# vim /etc/services

ftp             21/tcp

ftp             21/udp          fsp fspd

ssh             22/tcp                          # The Secure Shell (SSH) Protocol

ssh             22/udp                          # The Secure Shell (SSH) Protocol

telnet          23/tcp

telnet          23/udp

daemon的啓動腳本與啓動方式

     daemon 的啓動需要運行檔、配置文件、運行環境等等

     distribution會在/var/run目錄下記錄每隻daemon的PID

     基於以上動作 distribution通常會提供一個shell script來進行daemon的啓動 

     stand alone daemon的啓動

          [root@www init.d]# /etc/init.d/rsyslog

用法: /etc/init.d/rsyslog {start|stop|restart|condrestart|try-restart|reload|force-reload|status}

[root@www init.d]# /etc/init.d/rsyslog status

rsyslogd (pid  1212) 正在運行...

[root@www init.d]# /etc/init.d/rsyslog restart

關閉系統日誌記錄器:                                       [確定]

啓動系統日誌記錄器:                                       [確定]

[root@www init.d]# /etc/init.d/rsyslog status

rsyslogd (pid  8171) 正在運行...

      啓動 stand alone 服務的另一個程序 service

          service依然是根據你下達的參數 去 /etc/init.d目錄下取得正確的服務

          [root@www init.d]# service rsyslog restart

          關閉系統日誌記錄器:                                       [確定]

          啓動系統日誌記錄器:                                       [確定]

       super daemon的啓動

          super daemon本身也是一隻 stand alone 所以啓動方式相同

          但他所管理的其他daemon  要在他的配置文件( /etc/xinetd.d 下的所有文件) 中 配置啓動該daemon

          查看super daemon所管理服務時否啓動

               [root@www init.d]# grep -i 'disable' /etc/xinetd.d/*

               /etc/xinetd.d/echo-stream:       disable        = yes

               /etc/xinetd.d/tcpmux-server:    disable        = yes

               /etc/xinetd.d/telnet:                   disable        = no

          啓動/關閉管理的服務

          [root@www init.d]# vim /etc/xinetd.d/telnet

          service telnet

          { 

              ...

              disable         = no     意爲啓動

          }

          觀察啓動的端口

               [root@www init.d]# grep 'telnet' /etc/services

               telnet          23/tcp

               telnet          23/udp

               [root@www init.d]# netstat -tnlp | grep 23

               tcp        0      0 :::23                       :::*                        LISTEN      8425/xinetd

               

daemon相關文件

  • /etc/init.d/* :啓動腳本放置處
    幾乎所有的服務啓動腳本都放置在這裏! CentOS 實際上放置在 /etc/rc.d/init.d/目錄下 有鏈接

  • /etc/sysconfig/* :各服務的初始化環境配置文件
    幾乎所有的服務都會將初始化的一些選項配置寫入到這個目錄下

  • /etc/xinetd.conf, /etc/xinetd.d/* :super daemon 配置文件
    super daemon 只是一個統一管理的機制,他所管理的其他 daemon 的配置則寫在 /etc/xinetd.d/* 裏

  • /etc/* :各服務各自的配置文件

  • /var/lib/* :各服務產生的數據庫
    一些會產生數據的服務都會將他的數據寫入到 /var/lib/ 目錄中。舉例來說,數據庫管理系統 MySQL 的數據庫默認就是寫入 /var/lib/mysql/ 這個目錄下

  • /var/run/* :各服務的程序之 PID 記錄處
    可以利用 kill 或 killall 來管理,不過擔心管理時影響到其他的程序,會將自己的 PID 記錄一份到 /var/run/ 當中!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章