作业和流程之间有什么区别?


Answers:


46

进程是具有自己的地址空间的任何正在运行的程序。

作业是外壳程序使用的概念-交互启动的任何不会分离的程序(即,不是守护程序)都是作业。如果您正在运行交互式程序,则可以按CtrlZ暂停它。然后,您可以从前台(使用fg)或在后台(使用bg)重新启动它。

当程序挂起或在后台运行时,您可以启动另一个程序-然后,您将有两个作业在运行。您还可以通过添加“&”来启动在后台运行的程序,如下所示:program &。该程序将成为后台工作。要列出您正在运行的所有作业,可以使用jobs

有关作业的更多信息,请参见bash手册页的此部分


在上面的示例中,当我们有2个作业正在运行时,我们也有2个进程正在运行,不是吗?您能否详细说明其自身的地址空间?在哪种情况下,程序没有自己的地址空间?
肯尼

@Kenny是的,那些tro工作也将是流程。实际上,每一项工作都是一个过程。一份工作与您将参加的工作有关。您启动的,不会从tty中分离出来的每个过程都是一项工作。
肖恩·高夫

@Kenny,就进程而言,当我说程序时,这是非常普遍的事情-一组用于CPU执行的有序指令。这也称为任务或执行线程。一个进程可以创建另一个共享其地址空间的线程。
肖恩·高夫

1
诸如in之类的管道命令ls | sort是一项工作,但是每个命令都作为不同子shell进程的子进程运行。这是一个由多个流程组成的工作示例。您对工作的定义如何解释工作可以包含多个流程?
蒂姆(Tim)

30

UNIX具有单独的概念“进程”,“进程组”和“会话”。

登录时获得的每个shell都将成为其自己的新会话和进程组的领导者,并将终端的控制进程组设置为其自身。

Shell在当前会话中为其启动的每个“作业”创建一个进程组,并将其启动的每个进程放入相应的进程组中。例如,ls | head是两个流程的管道,外壳将其视为单个作业,并将属于一个新的流程组。

进程是执行线程和其他上下文(例如地址空间和文件描述符表)的(集合)。一个进程可以启动其他进程;除非采取其他措施,否则这些新流程将与父流程属于同一流程组。每个进程也可能有一个“控制终端”,它从其父进程开始。

外壳具有“前景”作业和“背景”作业的概念。前台作业是受终端控制的过程组,而后台作业是不受终端控制的过程组。

每个终端都有一个前台进程组。当将作业带到前台时,shell将其设置为终端的前台进程组;当将作业放到后台时,shell将终端的前台进程组设置为另一个进程组或本身。

如果进程在前台进程组中,则它们可以从其控制终端读取和写入。否则,它们接收SIGTTINSIGTTOU上尝试信号从读取和写入分别向终端。默认情况下,这些信号会挂起该过程,尽管大多数外壳会掩盖,SIGTTOU以便后台作业可以不间断地写入终端。


1
这是对Shell和终端进程管理的很好而简洁的概述。可以通过提及“工作”是“管道”来进行改进,它可以是一个流程组中多个连接在一起的流程。
克里斯·佩奇

1

在计算中,作业是工作单元或执行单元(执行所述工作)。作业的组成部分(作为工作单元)称为任务或步骤(如果是顺序的,如在作业流中)。作为执行单元,可以使用单个流程来具体标识作业,而该流程又可以具有子流程(子流程;与该作业相对应的流程是父流程),这些子流程执行包含该流程的工作或步骤。工作; 或与流程组一起;或带有对流程或流程组的抽象引用,如Unix作业控制中那样。

资源

很好的例子


-1

上面的定义是非常技术性的,但是操作人员可能需要更多的日常澄清。我认为工作是有计划的过程。一般而言,当我们处理流程时,不一定有计划的概念,但是当我们使用“工作”一词时,我们总是表示它是计划的,或者像循环一样重复,就像工作。


1
如果您想投反对票,请解释一下投反对票。如果此答案不正确,请至少解释一下您认为不正确的原因。直到现在,我仍然认为我的答案是合理的,这是我一直在寻找的一种解释。
eloone

我同意投反对票的人应该解释原因。但是,我认为不赞成投票的原因是您对“工作”的定义根本不正确。
顺行

努力解释为什么它是不正确的?没有像“过程”一样明确定义“作业”(系统中有PID)。以我的经验,“工作”一词总是用来定义某种计划的过程,该过程通常是在后台调度的,并且可以启动。这就是为什么很难定义的原因,因为用法定义了它。它也可以是一组过程,但是“容器”(LXC)也可以,但是“容器”不是“作业”。诸如“ nginx”之类的启动过程也不是“工作”。我的评论仍然给答案增加了一些东西。再次,它回答了我试图理解的内容。
eloone

我还在寻找正确的定义,所以很抱歉,我无法回答。但是不正确的是,必须将其安排好。
顺行
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.