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