Linux守护进程工作原理和方式----笛风读书笔记系列

2024-06-23 09:58

本文主要是介绍Linux守护进程工作原理和方式----笛风读书笔记系列,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

读书笔记系列之:Linux守护进程工作原理和方式

                                                                              笛风

                                                                              2013.10.16

文本Tag: 操作系统 linux服务器 操作系统

http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105780265d03c0743ca08b537cd0995f93130a1c187bb0bb25201b19d1c47e6c1caf4d59f7f23470350122b79fcd834ad7ac925f6ed2616b2e08c31c528516&p=8257d75686cc41ac5eb2c32d02149c&newp=9078ca0d8b934eaf5bebc82d021482231610db2151d1d649&user=baidu

  4.2.4  Linux守护进程工作原理和方式

  在C/S模式下,服务器监听(Listen)在一个特定的端口上等待客户连接。连接成功后服务器和客户端通过端口进行数据通信。守护进程的工作就是打开一个端口,并且等待(Listen)进入连接。如果客户端产生一个连接请求,守护进程就创建(Fork)一个子服务器响应这个连接,而主服务器继续监听其他的服务请求。

  1.独立运行的守护进程

   独立运行的守护进程由init脚本负责管理,所有独立运行的守护进程的脚本在/etc/rc.d/init.d/目录下。系统服务都是独立运行的守护进 程包括:syslogd和cron等。运行独立的守护进程工作方式称为stand-alone。它UNIX传统的C/S模式的访问模式。服务器监听在一个特点的端口上等待客户端的连接。如果客户端产生一个连接请求,守护进程就创建一个子服务器响应这个连接,而主服务器继续监听。以保持多个子服务器池等待下 一个客户端请求。stand-alone模式工作原理如图4-4所示。

    
  图4-4  stand-alone工作模式

  工作在stand-alone模式下的网络服 务有route、gated。另外是大家最熟悉是Web服务器:Apache和邮件服务器Sendmail、域名服务器Bind。因为这些负载很大服务器 上,预先创子服务器,可以通过客户的服务速度。在Linux系统中通过stand-alone工作模式启动的服务由/etc/rc.d/下面对应的运行级 别当中的符号链接启动。

  2.xinetd模式的守护进程

  从守护进程的概念可以看出,对于系统所要通过 的每一种服务,都必须运行一个监听某个端口连接所发生的守护进程,这通常意味着资源浪费。为了解决这个问题,Linux引进了"网络守护进程服务程序"的 概念。Redhat Linux 9以后版本使用的网络守护进程是xinted(eXtended InterNET daemon)。和stand-alone模式相比,xinted模式也称Internet Super-Server(超级服务器)。xinetd能够同时监听多个指定的端口,在接受用户请求时,它能够根据用户请求的端口不同,启动不同的网络服 务进程来处理这些用户请求。可以把xinetd看做一个管理启动服务的管理服务器,它决定把一个客户请求交给那个程序处理,然后启动相应的守护进程。 xinetd模式工作原理如图4-3所示。

   
  图4-5  xinetd工作模式

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

  3.三种守护进程管理工具

  Redhat Linux提供了三种不同的守护进程管理工具:redhat-config-services、ntsysv、chkconfig,可以根据具体需要灵活运用。

  (1)redhat-config-services

   redhat-config-services是一个图形化应用程序,它显示了每项服务的描述,以及每项服务是否在引导时启动(运行级别3、4、5), 以及允许你启动、停止或重新启动/etc/rc.d/init.d中的哪些SysV服务,哪些xinetd服务。要从桌面启动服务配置工具,可通过单击面 板上的「主菜单」=>「系统设置」=>「服务器设置」=>「服务」,或在shell提示下,输入命令:"redhat-config-services"(如图4-6所示)。

    
  图4-6  redhat-config-services配置工具

   redhat-config-services列出了/etc/rc.d/init.d中的服务和由xinetd控制的服务。单击左侧列表中的服务名来 显示该服务的简短描述,以及它的服务状态。如果这个服务不是xinetd服务,状态窗口会显示该服务目前是否在运行。如果该服务被xinetd所控制,状态窗口会显示"xinetd服务"这个短语。要立即启动、停止或重新启动某项服务,可从列表中选择该项服务,然后单击工具栏上的相应按钮(或从"行动"下 拉菜单中选择行动)。如果该服务是一个xinetd服务,行动按钮会被禁用,因为它们不能被单个地启动或停止。如果你通过选择或取消选择服务名旁的复选框 来启用或禁用了xinetd服务,必须从下拉菜单中选择"文件"=>"保存改变"来重新启动xinetd,并立即启用或禁用你所改变的xinetd 服务。xinetd还被配置成自动记忆设置。你可以同时启用或禁用多个xinetd服务,在结束后再保存改变。

  (2)ntsysv

   ntsysv工具为激活或停运服务提供了简单的界面。你可以使用ntsysv来启动或关闭由xinetd管理的服务,还可以使用ntsysv来配置运行 级别。按照默认设置,只有当前运行级别会被配置。要配置不同的运行级别,使用--level选项来指定一个或多个运行级别。例如,命令ntsysv-- level345配置运行级别3、4和5。ntsysv的工作界面如图4-3所示。使用上下箭头来上下查看列表。使用空格键来选择或取消选择服务,或按"确定"和"取消"按钮。要在服务列表和"确定"、"取消"按钮间切换,使用Tab键。*标明某服务被设为启动。按F1键会弹出每项服务的简短描述。

  (3)chkconfig

   chkconfig命令也可以用来激活和解除服务。chkconfig--list命令显示系统服务列表,以及这些服务在运行级别0到6中已被启动 (on)还是停止(off)。chkconfig还能用来设置某一服务在某一指定的运行级别内被启动还是被停运。例如,要在运行级别3、4、5中停运 nfs服务,使用下面的命令:

  chkconfig --level 345 nfs off

  4.合理选择守护进程规避安全隐患

  运行不必要或有漏洞的守护进程会给操作系统带 来安全和性能上的影响。对于系统安全来说,操作系统中的任何一个漏洞,都可能使整个系统受到攻击。所以,增加系统安全性的最佳办法就是尽量监视系统的功能。文章开始介绍了重要的守护进程,其中"crond、syslog、keytable、xinetd、kudzu、iptables"等是需要运行 的,echo、echo-udp、daytime、daytime-udp、chargen、chargen-udp主要做调试用,普通用户基本用不到, 可以关闭。

  r字开头的守护进程:rsh、rstatd、rsync、rusersd、rwalld,这些命令都是Berkley远程命 令,因为都以字母r开头,故称r*命令。主要用来使一台计算机上的某个用户以相同的账号远程执行另一台计算机的一个程序。但是,r命令已经被证实存在安全 风险。对于确实需要的守护进程,应该尽量选用最新的版本程序,并增强安全防范。

  另外我们还要合理选择守护进程。例如innd是运行新闻组服务的进程,如果用户不做新闻组服务器,应该关掉。



这篇关于Linux守护进程工作原理和方式----笛风读书笔记系列的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1086835

相关文章

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点: