daemon也是一段程序(program),不过它运行后是常驻在内存中的,daemon所提供的系统或网络功能就叫service。
daemon根据运行方式可以分为两种:stand alone和super daemon。stand alone可以独立的运行,不依赖于其他的程序。而super daemon需要通过一个叫做super daemon的程序来启动它。当然,super daemon本身也是一个stand alone daemon,这样它才能启动其他的daemon。stand alone是常驻内存的,所以当需要它的服务时,可以马上得到服务。常见的stand alone daemon有提供www服务的httpd,提供ftp服务的vsftpd(名字后的d就表示这个进程是一个daemon服务,这时约定俗成的)。super daemon并不是常驻内存的,当需要它的时候,才由super daemon这个daemon来启动它,完成服务又停止了。好处是可以对这些daemon实施一些策略控制,如防火墙,而且可以动态的占用内存资源,缺点就是速度比较慢。典型的有提供打印服务的cupsd
daemon根据工作方式可以分为signal control和interval control。signal control需要一个事件来触发它提供服务,如httpd需要接收到client的请求来触发。interval control daemon则会自己周期性的去检查是否需要提供服务,如定时任务atd和crond
daemon相关的文件
/etc/rc.d/init.d/* 或/etc/init.d/*
这个目录下存放这daemon程序的启动文件,执行某个服务的文件,就可以启动某项服务,如
[root@yang-centos init.d]# /etc/init.d/crond start
[root@yang-centos init.d]# /etc/init.d/crond status
crond (pid 6123) is running...
或者用service命令,如:
[root@yang-centos ~]# service crond status
crond (pid 6123) is running...
/etc/xinetd.d/*
这个目录下存放super daemon的启动和配置文件
由于super daemon需要super daemon来启动,所以需要先启动super daemon
安装:yum install xinetd
[root@yang-centos init.d]# ./xinetd status
xinetd is stopped
[root@yang-centos init.d]# ./xinetd start
Starting xinetd: [ OK ]
[root@yang-centos init.d]#
[root@yang-centos xinetd.d]# cat rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = yes
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
[root@yang-centos xinetd.d]# vim ./rsync
[root@yang-centos xinetd.d]# cat ./rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable =no
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
[root@yang-centos xinetd.d]# /etc/init.d/xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
[root@yang-centos xinetd.d]#
/etc/xinetd.conf
super daemon的默认配置文件,如果super daemon的某个配置项没有配置,则取这个文件中的值
/var/lib/*
daemon产生的数据库
/etc/services
daemon与端口号的对应关系
/var/run/*
daemon与pid的对应关系
用ps top netstat命令可以查看名字和pid的对应关系