4.2.1 Linux守护进程的概念
Linux服务器在启动时需要运行很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的系统服务(daemons)来执行的。系统服务是生存期较长的一种服务,它们独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。系统服务常常在系统引导装入时启动,在系统关闭时终止。系统服务完成许多系统任务,比如,作业规划服务crond、打印服务lqd等。在Client/Server模式下,服务器监听(Listen)在一个特定的端口上等待客户连接,连接成功后服务器和客户端通过端口进行数据通信。守护进程的工作就是打开一个端口,并且等待(Listen)连接。如果客户端发送一个连接请求,守护进程就创建(Fork)一个子服务器响应这个连接,而主服务器继续监听其他的服务请求。
4.2.2 Linux系统提供的服务及其守护进程列表
下面详细介绍一下Linux系统提供的服务及其守护进程。以英文字母为序,如表4-2所示。
服务名称 | 用途描述 |
adsl | 启动Roaring Penguin公司生产的ADSL设备 |
aep1000 | AEP双处理器驱动程序 |
服务名称 | 用途描述 |
alsasound | Alsa声卡驱动程序。Alsa声卡驱动程序本来是为了一种声卡Gravis Ultra Sound(GUS)而写的,该程序被证明很优秀,于是就开始为一般的声卡写驱动程序。Alsa和OSS/Free及OSS/Linux兼容,并且有自己的接口 |
amd | NFS文件系统自动挂装守护进程 |
apache | 加载Apache HTTP守护进程 |
apmd | 监控笔记本电脑的电池状态 |
argus | 启动Argus程序 |
arpwatch | 启动arpwatch守护进程 |
arptables_jf | 随arptables启动一个数据包过滤防火墙 |
atalk | AppleTalk TCP/IP守护进程 |
atd | AT批任务守护进程 |
autofs | autofs守护进程 |
avgate | Anti-Virus Mail Gateway(防病毒邮件网关)服务 |
bcm5820 | 硬件加密加速器支持 |
bgpd | BGP路由分配守护进程 |
Canna | Canna日语转换引擎 |
cipe | CIPE信道的守护进程 |
cron | cron任务调度服务 |
crond | cron任务调度服务的守护进程 |
cups | CUPS打印机守护进程 |
dc_client | Distcache(一种能对分布式SSL会话信息进行缓存的软件)客户端代理 |
dc_server | Distcache(一种能对分布式SSL会话信息进行缓存的软件)服务器代理 |
dhcpd | DHCP服务器的守护进程 |
dhcrelay | 对DHCP请求/响应进行跨网段中继 |
evlog | 事件日志守护进程 |
fam | 文件访问监控守护进程 |
fbset | 帧缓存区的创建 |
gpm | 允许在控制台上使用鼠标 |
heartbeat | 启动Heartbeat HA服务 |
hotplug | Linux热插拔支持 |
hpoj | HP OfficeJet打印机支持 |
httpd | Apache HTTP服务器 |
hwscan | 硬件扫描和重新配置 |
inetd | Internet守护进程 |
innd | InterNetNews服务器 |
ippl | IPPL系列协议的日志记录程序 |
ip6tables | ip6tables防火墙的守护进程 |
iptables | iptables防火墙的守护进程 |
ipsec | 加密且需要进行身份验证的数据通信 |
ipvsadm | 对虚拟服务器进行系统管理和维护 |
服务名称 | 用途描述 |
ipxmount | 通过IPX协议访问Novell网络 |
ipxrip | IPX路由分配守护进程 |
ircd | Internet Relay Chat(网络聊天)守护进程 |
irda | 提供对Infrared Data Association(红外数据协会)的支持;用于红外线通信 |
irqbalance | 多处理器系统上的中断分配/调度服务的守护进程 |
iscsi | 访问远程SCSI设备的守护进程 |
isdn | ISDN驱动程序 |
joystick | 游戏杆驱动程序 |
kadmin | Kerberos 5服务器 |
keytable | 各种键盘设置 |
krb524 | Kerberos 5密钥编码/解码器 |
krb5kdc | Kerberos 5服务 |
ksysguardd | ksysguard的远程监控守护进程 |
kudzu | 为配置新增硬件设备而对硬件进行参数试测 |
ldap | OpenLDAP2服务器 |
idirectord | 服务器集群用的Linux Director守护进程 |
lisa | LAN浏览器守护进程 |
mailman | mailman邮件表程序 |
mdmonitor | 以软件方式监控RAID工作情况 |
microcode | 对Intel公司的CPU微代码进行升级 |
microcode_ctl | 对CPU微代码进行升级 |
mon | Heartbeat HA服务的守护进程 |
mrtd | Multithreaded Routing Toolkit(多线程的路由分析工具箱)软件的守护进程 |
mysql | MySQL数据库服务器 |
nagios | 网络监控器 |
named | DNS(Domain Name Service,域名解析服务)服务器 |
nessusd | 允许从本机进行安全性测试扫描 |
netdump | 对netconsole和netcrashdump工具进行初始化 |
netdump_server | 通过网络发送oops错误报告数据和内存映像的服务器 |
netfs | 挂装和卸载NFS、SMB和NCP文件系统 |
network | 对网卡和路由进行配置 |
nfs | 导入远程网络文件系统 |
nfslock | NFS锁定守护进程 |
nfsserver | 基于操作系统内核的NFS守护进程 |
nmd | 基于IP协议的Samba NetBIOS命名服务 |
nscd | 对名字解析服务的结果进行缓存的守护进程 |
ntop | 监控网络的使用情况 |
ntpd | Network Time Protocol(网络时间协调协议)守护进程 |
nwe | 启动nwe服务器(marsnwe) |
服务名称 | 用途描述 |
ospf6d | OSPF IPv6路由分配守护进程 |
ospfd | OSPF路由分配守护进程 |
pcmcia | PCMCIA卡的配置数据库 |
pcscd | pcscd守护进程 |
pkcipe | CIPE公共密钥服务器 |
pkcsslotd | pkcsslotd守护进程 |
portmap | DARPA端口号到RPC程序号的映射器 |
postfix | Postfix邮件传输代理的守护进程 |
postgresl | PostgreSQL守护进程 |
powertweakd | 一种系统优化工具 |
pptpd | PoPToP PPTP守护进程 |
psacct | 进程开销计费 |
pxe | 在系统完成启动过程之前,通过网络启动其他机器执行环境的守护进程 |
quota | 激活quota(硬盘配额)服务 |
quotad | 启动quota守护进程 |
radiusd | 身份验证、授权和计费服务器的守护进程 |
radvd | 路由器广告守护进程 |
random | 随机数字发生器 |
rarpd | 负责处理逆向地址解析请求的服务器的守护进程 |
raw | 进行硬件级I/O操作的底层设备驱动的守护进程 |
rawdevices | 激活硬件级I/O操作的守护进程 |
rhnsd | 用来访问Red Hat在线升级服务的程序的守护进程 |
rinetd | 因特网重定向服务器的守护进程 |
ripd | RIP路由分配守护进程 |
ripngd | RIPNG路由分配守护进程 |
rpmconfigcheck | 对rpm配置文件进行扫描的守护进程 |
rpasswdd | 用来安全地对口令字进行远程更新 |
rstatd | 基于RPC协议的网络状态监控服务器的守护进程 |
rsyncd | rsync守护进程 |
rusersd | 查看当前正登录在其他机器上的用户 |
rwhod | 获得一份某远程机器上的登录用户清单 |
saslauthd | SASL身份验证服务器的守护进程 |
scanlogd | scanlogd端口扫描器的守护进程 |
sendmail | Sendmail邮件传输代理的守护进程 |
setserial | 对串行口进行初始化的守护进程 |
sgi_fam | 文件监控守护进程 |
slurpd | OpenLDAP2服务器的守护进程 |
smartd | 一个提供系统自我监控和报警功能的守护进程 |
smb | Samba SMB/CIFS文件和打印服务器的守护进程 |
服务名称 | 用途描述 |
smbfs | 导入远程SMB/CIFS文件系统的守护进程 |
smpppd | 因特网拨号连接的守护进程 |
snmpd | 由美国加州大学Davis分校开发的SNMP服务器 |
snmptrapd | 接收并记录SNMP陷阱消息 |
snort | 数据包嗅探器/记录器 |
Spamassassin | 用来过滤垃圾邮件的邮件过滤器 |
splash | 系统开、关机时显示的屏幕动画 |
splash_early | 网络启动后结束屏幕上的动画 |
splash_late | 关机前在屏幕上显示动画 |
squid | SQUID(一种提供Web缓存功能的软件)的守护进程 |
sshd | OpenSSH、SSH的守护进程 |
syslog / syslogd | 系统日志守护进程 |
tux | 线程化的、基于操作系统内核的HTTP服务器 |
vncserver | VNC服务器(Virtual Network Computing,虚拟网络计算) |
vtun | VPN守护进程 |
vsftpd | Very Safe FTP守护进程 |
winbindd | 对来自NT服务器的名字进行解析的NSS守护进程 |
wwwoffle | 代理服务器的守护进程 |
xdm | X屏幕管理器的守护进程 |
xfs | X字体服务器的守护进程 |
xinetd | 因特网守护进程 |
xntpd | Time(时间)协议守护进程 |
ypbind | 在NIS域里寻找服务器 |
yppasswdd | 允许NIS用户修改口令字 |
ypserv | 分布式NIS地图 |
ypxfrd | 更快地传输NIS地图 |
zebra | 路由管理守护进程 |
表4-2 Linux系统提供的服务及其守护进程
选择运行哪些系统服务,要根据具体需求决定。
4.2.3 Linux守护进程的运行方式
1.独立运行(stand-alone)的守护进程
独立运行的守护进程由init脚本负责管理,所有独立运行的守护进程的脚本在/etc/rc.d/init.d/目录下。系统服务都是独立运行的守护进程,包括syslogd和cron等。独立运行的守护进程的工作方式称做stand-alone,它是UNIX传统的C/S模式的访问模式。stand-alone模式的工作原理如图4-4所示。
工作在stand-alone模式下的网络服务有xinetd、route、gated,另外还有Web服务器Apache和邮件服务器Sendmail、域名服务器Bind。在Linux系统中通过stand-alone模式启动的服务由/etc/rc.d/下面对应的运行级别当中的符号链接启动。

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

和stand-alone工作模式相比,系统不想要每一个网络服务进程都监听其服务端口,运行单个xinetd就可以同时监听所有服务端口,这样就降低了系统开销,保护系统资源。但是对于访问量大、经常出现并发访问的情况,xinetd则要频繁启动相应的网络服务进程,反而会导致系统性能下降。查看系统为Linux服务提供哪种工作模式,可以在Linux命令行中使用pstree命令,就能看到两种不同模式启动的网络服务。一般来说系统中一些负载高的服务,Sendmail、Apache服务是单独启动的;而其他服务类型都可以使用xinetd超级服务器管理。