企鹅日记(十八):认识系统服务daemons

简单来讲,系统为了某些功能必须要提供一些服务(不论是系统本身还是网络方面),这个服务称为service,而实现这个service的程序就称为daemon,比如实现循环型工作调度服务的程序为crond这个daemon,这么说比较容易理解了吧。

deamon可分为可独立启动的stand alone,与通过一个super deamon来统一管理的服务这两类。

stand_alone:就是可独立启动的意思,启动后一直在内存中,因此响应速度很快,常见的比如WWW服务的httpd,FTP服务的vsftpd。

super daemon:一个特殊的daemon来统一管理。这个统一的daemon现在为xinetd,这种机制是没有客户端的时候,各项服务都是未启动状态,遇到请求时才唤醒对应的服务,当请求结束后,关闭服务并且释放资源。常见的有telnet

====daemon启动脚本====

× /etc/init.d/*:启动脚本放置处

× /etc/sysconfig/*:各服务的初始化环境配置文件

× /etc/xinetd.conf, /etc/xinetd.d/*:这两个是super daemon配置文件地方

super deamon的主配置文件为/etc/xinetd.conf,而它所管理的其他deamon配置文件放在目录/etc/xinetd.d/*中。

/etc/*:各个服务各自的配置文件,这个跟初始化不一样,运行时读取的配置放这里。

/var/lib/*:各个服务产生的数据库

一些会产生数据的服务会将它的数据写入/var/lib目录中,举例来说,数据库管理系统MySQL的数据库默认就是写入/var/lib/mysql/这个目录下。

/var/run/*:各个服务的程序的PID记录处。

比如日记文件的PID就记录在/var/run/syslogd.pid这个文件中,如此一来,/etc/init.d/syslog就能简单的管理自己的进程。

# /etc/init.d/syslog status

# /etc/init.d/syslog restart

还有一个service命令启动stand alone服务的脚本,其实service仅仅是个script,它可以分析你执行的service后面的参数,然后根据你的参数到/etc/init.d/去取得正确的服务来start或stop。它的语法是这样的:

# service [service-name] (start|stop|restart|…)

# service –status-all

启动super daemon的方式:

直接在/etc/xinetd.d/*下面编辑各自文件就行,比如我要启动rsync这个服务,那么:

# sudo vim /etc/xinetd.d/rsync,将disable = no 改成disable = yes

然后重启xinetd:

# sudo /etc/init.d/xinetd restart

查看端口:

# netstat -tnlp | grep 9080

====防火墙的设置====

任何以xinetd管理的服务都可以通过/etc/hosts.allow,/etc/hosts.deny来设置防火墙。基本上,只要一个服务受到xinetd管理,或者是该服务的程序支持TCP Wrapper函数功能的时候,那么该服务的防火墙方面的设置就能够以/etc/hosts.allow和/etc/hosts.deny来管理。

Linux主机的开机顺序是:

1,打开计算机电源,开始读取BIOS并进行主机的自我测试

2,通过BIOS取得第一个可开机设备,读取MBR取得启动装载程序

3,通过启动装载程序的设置,取得kernel并加载到内存,并且检测系统硬件

4,内核主动调用init进程

5,init进程开始执行系统初始化(/etc/rc.d/rc.sysinit)

6,依据init的设置进行deamon start(/etc/rc.d/rc[0-6].d/*)

这里解释下,具体执行那个rc[].d目录下的启动脚本是根据启动等级init level来的,图形化的level是5,文本模式为3,你懂的。

7,加载本机设置(/etc/rc.d/rc.local)

# chkconfig –list [service-name]

# chkconfig –level 345 atd on

=======================END=======================

 

本人博客已搬家,新地址为:http://yidao620c.github.io/

你可能感兴趣的:(企鹅日记)