系统为了某些功能必须要提供一些服务 (不论是系统本身还是网络方面),这个服务就称为 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/ 当中!