什么是守护进程与服务

守护进程(daemon),程序有的是在bash中执行程序触发的,也有开机的时候系统自行触发而在后台执行的,守护进程就是一个在后台中执行的程序,通常负责系统上的某个服务,让系统接受来自用户或者是网络客户的要求。

守护进程的主要分类

独立启动

启动后直接常驻内存,一直占用系统资源,当有要求时,会很快相应,如常见的守护进程httpd。

例子:银行里,有一种单一的服务窗口,如存钱窗口,直接去该窗口,有专人服务。

super daemon 超级守护进程

通过统一的守护进程来负责唤起服务,统一负责的守护程序就是inet服务。根据网络要求送来的数据包的内容,将数据包送到实际运行的服务,而该服务此时才会启动,最常见的就是ftp网络服务。当没有数据包来的时候,该服务不会一直占用系统资源,处于睡眠状态,反应时间也会比较慢。

例子:银行里有一种复合类型的窗口,同时提供装转,提款等业务,当你需要其中一项业务时,直接去改窗口,坐在窗口的工作人员会直接叫另外一个专门负责的人处理你的食物。假设去的人多了,就会存在很多人排队。那么这种窗口是“当完成一个之后再办理下一个”,还是“把单据全部收齐,一起处理呢”。

  • 多线程

把所有的单据收集,然后一次交给窗口的工作人员,一个服务同事会负责好几个程序

  • 单线程

无论如何,一个一个来,第一个没有处理完成之前,后面的情排队。

如果守护进程以工作状态来区分,可以氛围一下两类

单独控制

通过信号来管理,只要有任何要求,就立即启动去处理,如打印服务cupsd。

间隔控制

每隔一段时间就主动去执行某项工作,需要某个工作点才会去工作,比如atd,cron就是如何。

与服务有关的端口信息:/etc/service

在linux系统上,不同的网络服务有不一样的监听端口,可以通过指定指向主机的某个端口来连接想要的服务,这些通信协议使用的端口是固定的,也是公认的标准端口号,在/etc/services中。

...
rtmp              1/ddp    #Routing Table Maintenance Protocol
tcpmux            1/udp     # TCP Port Service Multiplexer
tcpmux            1/tcp     # TCP Port Service Multiplexer
...
第1栏为守护程序的名称,第2栏为该守护程序所用的端口号与其网络数据报传送的类型。
主要为联机后才进行数据传输的可靠TCP包,速度较快但是不确定较高的UDP包等。

守护程序的命名规则

无论如何,服务挂上linux使用时,通常在服务名称之后加上一个d。 如atd,crond。守护程序的shell脚本放置的地方是根据独立启动守护程序还是超级守护程序而有所不同。

  • 独立启动守护程序

放在/etc/init.d里面,几乎所有的RPM安装的套件启动脚本都在这里。

  • 超级守护程序

即是xinet或者inet。xinet也是一个守护程序,它是独立启动的,也就是会一直监听需求。挂在这个守护程序里面的服务设置项目写在/etc/xinetd.conf与/etc/xinetd.d/*目录的任何文件中。

独立启动的守护程序启动。

/etc/init.d/syslog start
service syslog start

service是一个程序,基本上,也只是用来启动/etc/init.d/下的shell脚本而已。服务都是以bash脚本里的case语法写成的。

守护程序的启动方式:service

启动守护程序,就要找到它的执行文件,各个主要的linux脚本都会针对服务,设计一个友好的shell脚本来启动,那就是/etc/init.d/下的文件。

/etc/init.d/syslog start

除了以上方式外,还可以通过Fedora(Red Hat系统)所提供的service程序来进行守护进程的启动,service是一个程序,基本上,也只是用来启动/etc/init.d/下的shell脚本。

service [service name] (start|stop|restart...)

事实上,开或者关某个端口,就是需要启动或者关闭某项服务。


qqlcbb
352 声望29 粉丝

玩一玩