进程、进程组、作业、会话

最近处理一个在esxi服务进程启动失败的问题,特别关注了一下进程组的概念,虽然并未解决该问题,不过既然看了还是总结一下:

进程


定义:运行在虚拟地址空间的一个程序执行实体。
引入进程的原因是:为使程序“并发”执行,且对“并发”执行的程序加以描述和控制。
一些特殊进程
ID 为 0 的进程通常是调度进程,常常被称为「交换进程」(swapper)。该进程是内核的一部分,它不是磁盘的程序。ID 为 1 的进程是 init 进程,在系统自举过程结束时由内核调用。该进程的程序文件是 /sbin/init 。此进程负责在自举内核后启动一个 Unix 系统。init 通常会读取与系统有关的初始化文件(/etc/rc* 或 /etc/inittab,以及 /etc/init.d/ 中的文件),并将系统启动至某个状态。init 进程不会终止,系统启动后产生的所有进程都由 init 进程衍生而来。
其他相关内容参见 1、wiki进程;2、进程与线程的一个简单解释

进程组


关于进程组的介绍,wiki上的介绍比较简单直接,这里就直接搬运

In POSIX-conformant operating systems, a process group denotes a collection of one or more processes. Process groups are used to control the distribution of signals. A signal directed to a process group is delivered individually to all of the processes that are members of the group.

定义:进程组是一个或多个进程的集合
引入的原因:用于控制向多个进程进行信号的分发,发给一个进程组是信号会发生给进程组中每一个进程
其他相关内容参见1、Linux 进程、进程组、会话周期、控制终端;

作业


Shell可以进行作业控制,即可以运行一个前台作业和任意多个后台作业,每个作业是都可以是一个或者多个进程。
作业与进程组的区别:如果作业中的某个进程又创建了子进程,则子进程不属于作业。一旦作业运行结束,Shell就把自己提到前台,如果原来的前台进程还存在(如果这个子进程还没终止),它自动变为后台进程组。这句话不不明白。。。

会话


定义:Session是一个或多个进程组的集合。通常,一个会话开始于用户登录,终止于用户退出,在此期间该用户运行的所有进程都属于这个会话期。
会话包括控制进程(会话首进程),一个前台进程组和任意后台进程组。一个会话只能有一个控制终端 ,产生在控制终端上的输入和信号将发送给会话的前台进程组中的所有进程

$proc1 | proc2 &
$proc3 | proc4 
那么此时,session中就会有三个进程组存在
分别是{登陆shell(session leader)},{proc1, proc2}, {proc3, proc4}。
进程、进程组、作业、会话_第1张图片
管道命令|

reference


UNIX进程组,会话和作业控制
Linux 进程、进程组、会话周期、控制终端
[Linux 基础 —— Linux 进程的管理与监控](Linux 基础 —— Linux 进程的管理与监控)

你可能感兴趣的:(进程、进程组、作业、会话)