守护程序,服务和流程之间的技术区别是什么?


120

我想知道在Ubuntu中运行的守护进程,进程和服务在行为上有什么区别。


3
这是StackOverflow的更好选择,在这里已经方便地被询问和回答了
汤姆·布鲁斯曼

5
@Tom:不,该SE帖子未回答什么是服务。总体而言,这里的答案更加详尽。
Mads Skjern 2014年

3
@TomBrossman,您链接的帖子与服务无关。
Pacerier,2014年

4
StackOverflow与编码有关。恶魔是一个统一的东西,没有比这更好的地方了
机器人先生

1
??这个问题怎么解决?
Jacob Vlijm

Answers:


123

守护 -守护进程并不能代表磁盘和执行监视器http://www.takeourword.com/TOW146/page4.html)。它们是在后台运行且不是交互式的过程。他们没有控制终端。

它们在预定义的时间或响应某些事件执行某些操作。在* NIX中,守护程序的名称以d结尾。

服务 -在Windows中,守护程序称为services

如果您想知道* NIX为什么有一个名为service的命令,它仅用于运行初始化脚本(初始化scriptrunlevel的简写)。

进程 -进程是一个正在运行的程序。在特定的时间点,它可以是runningsleepzombie(已完成的过程,但在等待其父过程获取返回值)。

资料来源和更多信息


2
进程在Linux上还有更多状态,这是一个很好的图表:linux-tutorial.info/modules.php?name=MContent&pageid=84
Dietrich Epp

这篇Ubuntu官方文档讨论了“服务”,我认为他们不是在谈论Windows!所以我应该把它读为守护程序吗?help.ubuntu.com/community/UbuntuBootupHowto
Mads Skjern

1
实际上,OP询问Ubuntu内的服务,而此答案讲述Windows上的服务。所以很明显匿名的答案是正确的
的Mads Skjern

根据serverfault.com/questions/129055/…守护程序和服务不相同
Mr.Robot '17

41
  1. 一个守护进程是一个背景下,非交互式程序。它与键盘分离,并且不显示任何交互式用户。表示后台程序的守护程序一词来自Unix文化。这不是普遍的。

  2. 服务是一种程序,其响应于来自通过一些进程间通信机制(通常是通过网络)其他程序的请求。服务是服务器提供的。例如,NFS端口映射服务作为单独的端口映射服务提供,该服务被实现为portmapd守护程序。

    服务不必一定是守护程序,但通常是。具有GUI的用户应用程序可以内置服务:例如,文件共享应用程序。另一个示例是X Window服务,它不在后台运行:它可以接管屏幕,键盘和定位设备。这是一项服务,因为它可以响应来自应用程序的请求(以创建和操作Windows等),这些应用程序甚至可以位于网络上的其他位置。但是X服务也会响应您的每次击键和鼠标移动。

  3. 进程是一个或多个执行线程以及它们的共享资源集,其中最重要的是地址空间和打开文件描述符。进程为这些执行线程创建了一个环境,看起来它们拥有一台完整的机器:它是一个虚拟机。

    在一个进程内部,其他进程和内核的资源是不可见的,并且不能直接访问(至少对于正在执行用户空间代码的线程而言)。例如,无法引用另一个进程的打开文件或其内存空间。好像那些东西根本不存在。

    进程及其与内核和其他进程的关系,可能构成类Unix操作系统中最重要的抽象。系统的资源被划分为多个进程,几乎所有事物都被理解为发生在一个或另一个进程内部。


您不能通过直接查询系统的RAM获得其他进程的内存吗?
Pacerier,2014年

1
进程通常无法直接查询系统的RAM。现代的OS使用虚拟地址空间(en.wikipedia.org/wiki/Virtual_address_space),这意味着每个进程只能与虚拟的内存视图进行交互,在此情况下,操作系统将完全控制可访问的内容。
akroy

“一个进程为这些执行线程创建了一个环境,看起来它们拥有一台完整的机器:它是一个虚拟机。” 很好的放置方式,从来没有这么清楚地想过。但是,当然,抽象正在泄漏。就像一个可以测量时间的过程(甚至可以通过处理器完成)可以注意到,它并不是机器上唯一的时间。当然,操作系统确实提供了枚举其他进程的机制。
masterxilo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.