Linux进程关系是怎样的

66次阅读
没有评论

共计 1819 个字符,预计需要花费 5 分钟才能阅读完成。

本篇内容主要讲解“Linux 进程关系是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让丸趣 TV 小编来带大家学习“Linux 进程关系是怎样的”吧!

Linux 的进程相互之间有一定的关系。比如说,在
Linux 进程基础中,我们看到,每个进程都有父进程,而所有的进程以 init 进程为根,形成一个树状结构。我们在这里讲解进程组和会话,以便以更加丰富的方式了管理进程。
 
进程组 (process group)

每个进程都会属于一个进程组 (process group),每个进程组中可以包含多个进程。进程组会有一个进程组领导进程 (process group leader),领导进程的 PID (PID 见 Linux 进程基础) 成为进程组的 ID (process group ID, PGID),以识别进程组。

$ps -o pid,pgid,ppid,comm | cat

  PID  PGID  PPID COMMAND
17763 17763 17751 bash
18534 18534 17763 ps
18535 18534 17763 cat
PID 为进程自身的 ID,PGID 为进程所在的进程组的 ID,PPID 为进程的父进程 ID。从上面的结果,我们可以推测出如下关系:

图中箭头表示父进程通过 fork 和 exec 机制产生子进程。ps 和 cat 都是 bash 的子进程。进程组的领导进程的 PID 成为进程组 ID。领导进程可以先终结。此时进程组依然存在,并持有相同的 PGID,直到进程组中最后一个进程终结。

我们将一些进程归为进程组的一个重要原因是我们可以将信号发送给一个进程组。进程组中的所有进程都会收到该信号。我们会在下一部分深入讨论这一点。
 
会话 (session)

更进一步,在 shell 支持工作控制 (job control) 的前提下,多个进程组还可以构成一个会话 (session)。bash(Bourne-Again shell)支持工作控制,而 sh(Bourne shell)并不支持。

会话是由其中的进程建立的,该进程叫做会话的领导进程(session leader)。会话领导进程的 PID 成为识别会话的 SID(session ID)。会话中的每个进程组称为一个工作(job)。会话可以有一个进程组成为会话的前台工作(foreground),而其他的进程组是后台工作(background)。每个会话可以连接一个控制终端(control terminal)。当控制终端有输入输出时,都传递给该会话的前台进程组。由终端产生的信号,比如 CTRL+Z,CTRL+\,会传递到前台进程组。

会话的意义在于将多个工作囊括在一个终端,并取其中的一个工作作为前台,来直接接收该终端的输入输出以及终端信号。其他工作在后台运行。

一个命令可以通过在末尾加上 方式让它在后台运行:

$ping localhost log

此时终端显示:

[1] 10141

括号中的 1 表示工作号,而 10141 为 PGID

我们通过如下方式查询更加详细的信息:

$ps -o pid,pgid,ppid,sid,tty,comm

(tty 表示控制终端)

信号可以通过 kill

$kill -SIGTERM -10141

或者

$kill -SIGTERM %1

的方式来发送给工作组。上面的两个命令,一个是发送给 PGID(通过在 PGID 前面加 - 来表示是一个 PGID 而不是 PID),一个是发送给工作 1(%1),两者等价。

一个工作可以通过 $fg 从后台工作变为前台工作:

$cat log

$fg %1

当我们运行第一个命令后,由于工作在后台,我们无法对命令进行输入,直到我们将工作带入前台,才能向 cat 命令输入。在输入完成后,按下 CTRL+ D 来通知 shell 输入结束。

进程组 (工作) 的概念较为简单易懂。而会话主要是针对一个终端建立的。当我们打开多个终端窗口时,实际上就创建了多个终端会话。每个会话都会有自己的前台工作和后台工作。这样,我们就为进程增加了管理和运行的层次。在没有图形化界面的时代,会话允许用户通过 shell 进行多层次的进程发起和管理。比如说,我可以通过 shell 发起多个后台工作,而此时标准输入输出并不被占据,我依然可以继续其它的工作。如今,图形化界面可以帮助我们解决这一需求,但工作组和会话机制依然在 Linux 的许多地方应用。

到此,相信大家对“Linux 进程关系是怎样的”有了更深的了解,不妨来实际操作一番吧!这里是丸趣 TV 网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计1819字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)