Linux 守护进程和超级守护进程(xinetd)

时间:2022-01-22 00:21:09

一 、Linux守护进程

Linux 服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程来执行的。

守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。

linux系统有很多守护进程,大多数服务器都是用守护进程实现的。同时,守护进程完成许多系统任务,比如,作 业规划进程crond、打印进程lqd等。有些书籍和资料也把守护进程称作:“服务”。

守护进程,也就是指daemon和service。

二 、Linux守护进程的分类

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

独立启动(stand_alone):该类进程启动后就常驻内存,所以会一直占用系统资源。其最大的优点就是它会一直启动,当外界有要求时相应速度较快,像httpd等进程;
   超级守护进程:系统启动时由一个统一的守护进程xinet来负责管理一些进程,当相应请求到来时需要通过xinet的转接才可以唤醒被xinet管理的进程。这种进程的优点时最初只有xinet这一守护进程占有系统资源,其他的内部服务并不一直占有系统资源,只有数据包到来时才会被xinet管理员来唤醒。并且我们还可以通过xinet来对它所管理的进程设置一些访问权限,相当于多了一层管理机制。

如果用两个比喻来形容两类守护进程的话一般会用银行的业务处理窗口来类比:
   独立启动:银行里有一种单服务的窗口,像取钱,存钱等窗口,这些窗口边上始终会坐着一个人,如果有人来取钱或存钱,可以直接到相应的窗口去办理,这个处理单一服务的始终存在的人就是独立启动的守护进程;

超级守护进程:银行里还有一种窗口,提供综合服务,像汇款,转账,提款等业务;这种窗口附近也始终坐着一个人(xinet),她可能不提供具体的服务,提供具体服务的人在里面闲着聊天啊,喝茶啊,但是当有人来汇款时他会大声喊一句,小王,有人汇款啦,然后里面管汇款的小王会立马跑过来帮忙办完汇款业务。其他的人继续聊天,喝茶。这些负责具体业务的人我们就称之为超级守护进程。当然可能汇款人会有一些规则,可能不能往北京汇款,他就会提早告诉xinet,所以如果有人来汇款想汇往北京的话,管理员就直接告诉他这个我们这里办不到的,于是就根本不会去喊汇款员了,相当于提供了一层管理机制。针对这种窗口还存在多线程和单线程的区别:多线程:将所有用户的要求都提上来,里面的人都别闲着了,都一起干活吧;
单线程:大家都排好队了,一个一个来,里面的人同一时间只有一个人在工作。

xinetd服务是Unix操作系统一项比较特殊的服务,因为它本身可以负责其他一些网络服务的启动、停止、记录。Xinetd的全称是 eXtended InterNET services daemon,经常用来管理多种轻量级Internet 服务,如telnet、 talk、 pop3、 imap 等,有时也用来管理Apache 和ftp服务。

stand alone 的 daemon 响应速度快。常見的 stand alone daemon 有 WWW 的 daemon (httpd)、FTP 的 daemon (vsftpd) 等等。