1.进程组
- 每个进程除了有一个进程ID外,还属于一进程组。通常进程组与作业相关联,可以收到同一终端的各种信号。
- 每个进程有唯一的一个进程组ID。
- 组长进程可创建一个进程组,创建该组中的进程,然后终止。
- 只要在某一个进程组中的一个进程存在,该进程组就存在,这与其组长进程是否终止无关。
2.作业
- 作业与进程组的区别:1.如果作业中某个进程创建了子进程,则该子进程属于进程组成员但不属于作业。
- 如果前台的作业结束, shell就将自己提到前台(子进程还在,子进程不属于作业),所以该子进程被自动提到后台运行,变为后台的进程组。
- 作业控制:shell分前后台运行的是作业或者进程组, 一个前台作业可以由多个进程组成,一个后台也可以由多个进程组成,Shell可以运行一个前台作业和任意多个后台作业, 这称为作业控制。
- 作业控制的命令 jobs 查看当前作业 和 fg 将后台作业提到前台运行。
3.会话
- 会话(Session)是一个或者多个进程组的集合。
- 一个会话可以有一个控制终端。
- 一个会话中的几个进程组可以被分为一个前台进程组以及一个或多个后台进程组。
- 建立与控制终端连接的会话首进程被称为控制进程。
- 所以一个会话中,应该包括控制进程(会话首进程也就是bash)一个前台进程组和任意后台进程组。
- 每打开一个终端就建立了一个会话。
4.守护进程
守护进程详解