系統爲了某些功能必須要提供一些服務 (不論是系統本身還是網絡方面),這個服務就稱爲 service 。
但是 service 的提供總是需要程序的運行 所以達成這個 service 的程序我們就稱呼他爲 daemon
daemon的主要分類
可獨立啓動的 stand alone daemon 來管理服務
啓動後 一直佔用內存與系統資源 客戶端請求時 響應速度快
http
透過一隻 super daemon 來統一管理服務 xinetd
只有super daemon常駐內存
沒有客戶端請求時 各項服務都是爲啓動狀態
有請求時 super daemon才喚醒相對應的服務 加載內存等資源
請求結束後 被喚醒的服務再次關閉並釋放資源
具有安全控制的機制 類似網絡防火牆的功能
telnet
super daemon 有兩種處理模式
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/ 當中!