Daemon是Linux的一些系统服务,它们是一些常驻内存的进程。
Daemon拥有两种分类方式,按照“daemon是否可以在内存中独立启动”可以分为:stand alone和super daemon;按照“请求到来时是否能够立即运行”可分为:signal-control和interval-control。下面详细介绍两种分类方式。
stand-alone类型的daemon和super daemon类型的daemon有各自的启动方式。
super daemon的默认配置文件为:/etc/xinetd.conf,它为它所管理的所有daemon做了一些默认的配置。 从最后一行的includedir /etc/xinetd.d可以看出,它加载了它所管理的所有daemon的配置:
defaults
{
# The next two items are intended to be a quick access place to
# temporarily enable or disable services.
#
# enabled =
# disabled =
# Define general logging characteristics.
log_type = SYSLOG daemon info
log_on_failure = HOST
log_on_success = PID HOST DURATION EXIT
# Define access restriction defaults
#
# no_access =
# only_from =
# max_load = 0
cps = 50 10
# Address and networking defaults
#
# bind =
# mdns = yes
v6only = no
# setup environmental attributes
#
# passenv =
groups = yes
umask = 002
# Generally, banners are not used. This sets up their global defaults
#
# banner =
# banner_fail =
# banner_success =
}
includedir /etc/xinetd.d
下面来看一下具体的某个daemon的配置:
service rsync #service后为daemon的名字
{
disable = yes #yes表示关闭此daemon,no表示开启此daemon
socket_type = stream#stream表示使用TCP、dgram表示使用UDP、raw表示直接与IP交互
wait = no
user = root#以什么用户的身份启动这个daemon
server = /usr/bin/rsync#这个daemon的启动程序
server_args = --daemon#启动时所需的参数
log_on_failure += USERID#登录失败时需要记录用户
}
由于受super daemon管理的daemon的请求都首先需要经过super daemon,因此super daemon可以充当防火墙的角色,拒绝一些不安全的请求。 super daemon提供了两种防火墙机制,第一种方式提供较多详细的安全设置,而第二种方式只能阻挡或允许指定的IP,具体见下:
在某个具体的daemon配置文件中添加如下参数,即可为daemon配置防火墙:
Linux启动时可以选择有不同的开机等级,不同等级将会开启不同的系统服务。窗口界面的执行等级为level5,命令行的执行等级为level3. 我们可以用chkconfig命令来查看和设置开机启动的服务:
NetworkManager 0:off 1:off 2:off 3:off 4:off 5:off 6:off
acpid 0:off 1:off 2:off 3:off 4:off 5:off 6:off
aegis 0:off 1:off 2:on 3:on 4:on 5:on 6:off
anacron 0:off 1:off 2:off 3:off 4:off 5:off 6:off
atd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
xinetd based services:
chargen-dgram: off
chargen-stream: off
daytime-dgram: off
daytime-stream: off
我们可以看到,所有的服务被分成两块,一块是stand alone型的daemon,一块是被super daemon管理的daemon。我们可以发现,只有stand alone型的daemon才拥有执行等级。
chkconfig --level 3 redis on#将redis在level3情况下设为开机自启
设置成功之后可以看到,redis在level3下已经on:
[root@i]# chkconfig --list redis
redis 0:off 1:off 2:off 3:on 4:off 5:off 6:off