百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

Linux系统daemon守护进程详解

sinye56 2025-01-12 18:19 9 浏览 0 评论

摘要: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查看其脚本

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: