Linux Daemon2024 年 08 月 29 日 | 阅读 9 分钟 什么是守护进程(daemon)?守护进程是一种在类UNIX操作系统上默默地在后台执行的程序,而不是由用户直接访问。它等待特定条件或事件的出现来触发。 通常,类UNIX系统会运行许多守护进程,主要用于响应网络上其他系统的服务请求、硬件活动以及其他程序的响应。 可以激活守护进程的条件或动作示例包括特定日期或时间、指定时间间隔的过去、从特定通信线路接收到的网络请求或电子邮件,以及文件进入特定目录。 条件或动作的执行者不一定知道守护进程正在监听。 然而,程序通常会执行一个动作,仅仅因为它们知道这会隐式地唤醒一个守护进程。 守护进程也称为后台进程。它是一种在后台执行的UNIX或Linux程序。几乎每个守护进程的名称都以字母“d”结尾。例如,sshd,它管理SSH远程访问连接,或者httpd守护进程,它管理Apache服务器。通常,Linux在启动时就会启动守护进程。 各种shell脚本保存在/etc/init.d目录中。这些脚本用于启动和停止守护进程。 Linux进程通常,守护进程是作为进程实例化的。这些进程是程序的运行或执行实例。进程由操作系统核心(即内核)处理,内核为所有特殊进程分配标识号。 在Linux中,主要有以下三种常见进程类型:
批处理进程通过进程队列提交,与命令行无关。这些进程非常适合在系统使用率低时执行重复操作。 交互式进程由用户在命令行上交互式执行。 守护进程被系统识别为那些父进程的PID为1的进程。 它总是定义init进程。init进程是Linux系统启动时启动的第一个进程,它会一直存在于系统中,直到系统关闭。 init可以收养任何父进程终止或死亡而未等待子进程状态的进程。 因此,启动守护进程的基本技术是分叉(forking)两次或一次,并让父进程终止,而子进程开始执行其一般功能。 守护进程的历史一些守护进程由System V的init脚本发布。这些脚本或短程序可以在系统启动时自动执行。它们可能按间隔复制或在会话期间持续存在。 现在,许多守护进程仅在需要时由一个守护进程(xinetd)启动,而不是持续执行。xinetd被称为TCP/IP超级服务器。 它在启动时启动,并监听分配给配置文件(即/etc/xinetd.conf或/etc/inetd.conf)中列出的进程的各种端口。 手动地,一些守护进程也可以在被应用程序和操作系统启动的同时启动。所有守护进程在包括Linux在内的几个类UNIX操作系统中都有一个独立的脚本,可以使用该脚本重新启动和终止它。 这些脚本的管理是根据运行级别(runlevel)来实现的。运行级别可以定义为系统的操作或配置状态,它只允许某些选定的进程可用。启动到不同的运行级别可以帮助解决某些问题,包括纠正系统错误。 守护进程的关键点下面解释了守护进程的一些重要关键点
守护进程的实现类Unix系统在类Unix系统中,如果一个进程的父进程死亡,并且该守护进程被指定为init进程(进程号为1的进程)作为父进程,并且严格来说没有控制终端,那么它就是一个守护进程。 然而,守护进程可以是任何后台进程,无论它是否是init进程的子进程。 在类UNIX系统上,一个程序成为守护进程的基本技术,当该程序通过命令行或启动脚本(如System Starter脚本或init脚本)启动时,包括:
当进程由任何超级服务器守护进程(如systemd、launchd或inetd)启动时,超级服务器将为该进程执行这些功能,除了那些未转换为在systemd下执行并被描述为inetd上的多线程和Type=forking数据报服务器的旧式守护进程。 MS-DOS在Microsoft DOS平台中,类似守护进程的程序作为终止并驻留(简称TSR)软件执行。 Windows NT在Microsoft Windows NT系统上,称为Windows服务的程序执行这些守护进程的功能。它们作为进程执行,通常不与鼠标、键盘和显示器交互。它们可以在启动时由操作系统启动。 Windows服务可以通过控制面板(一个专门的配置/控制程序)、PowerShell脚本系统、net stop和net start命令,或服务控制管理器的服务控制器元素进行手动停止、启动和配置。 然而,任何Windows应用程序都可以执行守护进程的职责,而不仅仅是作为服务,一些Windows守护进程可以选择作为普通进程执行。 经典macOS和Mac OS经典Mac OS中,通过在启动时加载的文件来提供各种可选服务和功能,这些文件重建了操作系统。 这些文件被称为控制面板和系统扩展。标准Mac OS的后期版本通过完全成熟的无界面后台应用程序扩展了这些功能。 这些应用程序是运行在后台的常规应用程序。它们仍然被用户指定为常规系统扩展。 macOS是一个Unix系统,它使用守护进程。macOS使用“服务”一词来指代通过服务菜单选择执行功能的软件,而不是像Windows那样将该术语用于守护进程。 守护进程的典型功能
我们如何通过shell提示符启动、重启或停止守护进程?我们需要使用它们的服务命令,如下所示: 在下面的示例中,启动、重启和停止。 我们如何检查每个正在运行的守护进程列表?要检查每个已安装守护进程的状态,请键入 规划我们的守护进程守护进程将做什么?守护进程必须只做一件事,并且做好。这唯一的事情可能像处理一个或多个域上的大量邮箱一样复杂,或者像调用sendmail向管理员发送邮件并指定报告一样简单。 无论如何,我们都必须对守护进程应该做什么有更好的了解。它将与我们可能指定或不指定的其他守护进程进行交互。这也是需要检查的其他方面。 互动守护进程绝不能通过终端直接与用户通信。所有通信都通过某种接口(我们可能需要或可能不需要指定),该接口可以像GUI+GTK一样复杂,也可以像单个集合一样简单。 守护进程的基本结构守护进程启动时,必须进行一些低级别的内务处理,为实际工作做好准备。这包括以下步骤:
Unix和Linux类系统的守护进程服务列表
下一个主题Linux Zip 命令 |
我们请求您订阅我们的新闻通讯以获取最新更新。