龙空技术网

Linux系统daemon守护进程详解

JasonTang 1674

前言:

现时大家对“mysqldaemon”大约比较注意,咱们都需要学习一些“mysqldaemon”的相关资讯。那么小编在网络上搜集了一些有关“mysqldaemon””的相关资讯,希望兄弟们能喜欢,朋友们快快来了解一下吧!

摘要:Linux系统中,Daemon守护进程(也称Service服务)表示后台运行的程序,一般随系统的启动自动地启动。该daemon进程一般在启动后需要与父进程断开关系,并使进程没有控制终端(tty)。因为daemon程序在后台执行,不需要与终端交互。daemon无法输出信息,可以使用syslog或自己的日志系统进行日志处理。

本文主要介绍Linux系统daemon守护进程的功能和特点,详细内容参考下文。

一、Linux守护进程

1、Daemon守护进程的概念

Linux 系统Daemon守护进程是指运行在后台的一种特殊进程。其独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件,不需要用户输入就能运行而且提供某种服务。Linux系统的大多数服务器就是通过守护进程实现的。常见的守护进程包括系统日志进程syslogd、站点服务器httpd、邮件服务器sendmail和数据库服务器mysqld等。

守护进程一般在系统启动时开始运行,除非强行终止,否则直到系统关机都保持运行。守护进程经常以超级用户root权限运行。一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程。守护进程的名称通常以d结尾,比如sshd、xinetd、crond等。

2、Daemon守护进程的分类

根据守护进程的启动和管理方式,可以分为独立启动守护进程和超级守护进程两类。

(1)、独立启动守护进程:该类进程启动后就常驻内存,所以会一直占用系统资源。其最大的优点就是它会一直启动,当外界有要求时响应速度较快,像httpd等进程。

(2)、超级守护进程:系统启动时由一个统一的守护进程xinet来负责管理一些进程,当相应请求到来时需要通过xinet的转接才可以唤醒被xinet管理的进程。这种进程的优点时最初只有xinet这一守护进程占有系统资源,其他的内部服务并不一直占有系统资源,只有数据包到来时才会被xinet管理员来唤醒。并且还可以通过xinet来对它所管理的进程设置一些访问权限,相当于多了一层管理机制。

3、Daemon守护进程的运行方式

说明:根据守护进程的启动和管理过程,可以将守护进程的运行方式分为独立运行和xinetd模式运行两种进程运行方式。

(1)、独立运行的守护进程

独立运行的守护进程由init脚本负责管理,所有独立运行的守护进程的脚本在/etc/rc.d/init.d/目录下。系统服务都是独立运行的守护进程,包括syslogd和crond等。独立运行的守护进程的工作方式称做stand-alone,它是UNIX传统的C/S模式的访问模式。工作在stand-alone模式下的网络服务有xinetd、route、gated,另外还有Web服务器Apache和邮件服务器Sendmail、域名服务器Bind。在Linux系统中通过stand-alone模式启动的服务由/etc/rc.d/下面对应的运行级别当中的符号链接启动。

(2)、xinetd模式运行的守护进程

从守护进程的概念可以看出,对于系统所要通过的每一种服务,都必须运行一个监听某个端口连接所发生的守护进程,这通常意味着资源浪费。为了解决这个问题,Linux引进了"网络守护进程服务程序"的概念。最基础的网络守护进程是xinted(eXtended InterNET daemon)。xinetd能够同时监听多个指定的端口,在接受用户请求时,能够根据用户请求的端口的不同,启动不同的网络服务进程来处理这些用户请求。可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给哪个程序处理,然后启动相应的守护进程。xinetd无时不在运行并监听它所管理的所有端口上的服务。当某个要连接它管理的某项服务的请求到达时,xinetd就会为该服务启动合适的服务器。

执行指令# pstree查看各种服务

二、Xinetd进程

1、Xinetd概念

xinetd即extended internet daemon,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器。经常用来管理多种轻量级Internet服务。xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全。

2、Xinetd特色

(1)、强大的存取控制功能

内置对恶意用户和善意用户的差别待遇设定。

使用libwrap支持,其效能更甚于tcpd。

可以限制连接的等级,基于主机的连接数和基于服务的连接数。

设置特定的连接时间。

将某个服务设置到特定的主机以提供服务。

(2)、有效防止DoS攻击

可以限制连接的等级。

可以限制一个主机的最大连接数,从而防止某个主机独占某个服务。

可以限制日志文件的大小,防止磁盘空间被填满。

(3)、强大的日志功能

可以为每一个服务就syslog设定日志等级。

如果不使用syslog,也可以为每个服务建立日志文件。

可以记录请求的起止时间以决定对方的访问时间。

可以记录试图非法访问的请求。

(4)、转向功能

可以将客户端的请求转发到另一台主机去处理。

(5)、与客户端的交互功能

无论客户端请求是否成功,xinetd都会有提示告知连接状态。

3、适合使用Xinetd启动守护进程

说明:原则上任何系统服务都可以使用xinetd,然而最适合的应该是那些常用的网络服务,同时,这个服务的请求数目和频繁程度不会太高。像DNS和Apache就不适合采用这种方式,而像FTP、Telnet、SSH等就适合使用xinetd模式,系统默认使用xinetd的服务可以分为如下几类。

Internet服务

telnet、ftp

邮件服务

imap、imaps、pop2、pop3、pops

信息服务

finger、netstat、systat

RPC服务

rquotad、rstatd、rusersd、sprayd、walld

BSD服务

comsat、exec、login、ntalk、shell、talk

内部服务

chargen、daytime、echo、servers、services、time

安全服务

irc

其他服务

name、tftp、uucp

4、Xinetd进程的配置文件介绍

说明:在Linux系统中,对应着Xinet进程的配置文件有以下三个,分别为/etc/services, /etc/xinetd.conf和/etc/xinetd.d/*

Xinet进程

/etc/services, /etc/xinetd.conf和/etc/xinetd.d/*

(1)、/etc/services

说明:在/etc/services 中设置了xinetd下的service对应的端口。

(2)、/etc/xinetd.conf

说明:Xinetd的配置文件是/etc/xinetd.conf,但是它只包括几个默认值及/etc/xinetd.d目录中的配置文件。如果要启用或禁用某项xinetd服务,编辑位于/etc/xinetd.d目录中的配置文件。例如,disable属性被设为yes,表示该项服务已禁用;disable属性被设为no,表示该项服务已启用。

(3)、/etc/xinetd.d/*

下面以/etc/xinetd.d/中的一个文件(time-stream)为例。

下面说明每一行选项的含义。

disable = yes:表示禁用这个服务。

socket_type = stream:表示服务的数据包类型为stream。

wait = no:表示不需等待,即服务将以多线程的方式运行。

user = root:表示执行此服务进程的用户是root。

server = /usr/bin/rsync:启动脚本的位置。

log_on_failure += USERID:表示设置失败时,UID添加到系统登记表。

三、Service命令

说明:Linux的Service命令就是查看和控制所有的独立启动的守护进程。Service此命令位于/sbin/service,用file命令查看此命令会发现它是一个脚本命令。分析脚本可知此命令的作用是去/etc/init.d目录下寻找相应的服务,进行开启和关闭等操作。例如service mysqld stop等价于/etc/init.d/mysqld stop。

执行指令# vim /sbin/service查看其脚本

标签: #mysqldaemon