Linux进程组
1. 定义:多个进程的集合,有唯一PGID,通常等于组长进程PID,组长结束不影响组存在,直到最后一个进程终止。
2. 核心作用:批量管理进程,如终端关闭时统一发送信号;区分前台/后台进程组,控制用户交互权限。
3. 特性:
◦ 一个进程同一时间仅属一个进程组;
◦ 前台进程组可接收终端输入和信号,后台则不能;
◦ 子进程默认继承父进程的进程组。
4. 常见构造方式:
◦ 管道符连接命令,自动组成前台进程组;
◦ 后台运行:用括号括起多个命令+&,如“(cmd1; cmd2) &”,组成单个后台进程组;单个命令+&则单独成组。
5. 优势举例:
◦ 管道命令按Ctrl+C时,进程组内所有进程同时终止,避免遗漏;
◦ 后台进程组通过“jobs”查看,用“kill %任务号”可终止整个组。
会话
概念:会话是 Linux 进程管理的高层单位,可理解为 “一次用户登录” 或 “一个独立的终端交互环境”,用于管理终端与进程的关系,支持作业控制。
组成与层级:
- 会话(Session):包含一个或多个进程组。
- 进程组(Process Group):包含一个或多个相关进程。会话中,有且仅有一个前台进程组(接收终端输入和信号),可同时有多个后台进程组(无终端交互)。
- 进程(Process):进程组的基本单位。
关键角色:
- 会话首进程(Session Leader):创建会话的进程,通常是登录后的第一个 shell(如 bash)。其 PID 即为会话 ID(SID)。
- 控制终端(Controlling Terminal):会话通常关联一个控制终端(物理终端、虚拟终端或 SSH 伪终端),是用户输入输出的界面。
核心特性:
- 独立性:不同会话相互独立,如打开多个终端窗口,每个窗口对应一个独立会话。
- 作业控制:支持前台 / 后台进程切换(如
&、Ctrl+Z、bg、fg命令)。 - 生命周期:用户登录创建会话,注销或会话首进程退出时,会话终止,相关进程通常会被终止。
相关命令 / 函数:
ps -o pid,pgid,sid,tty,comm:查看进程的 PID、PGID(进程组 ID)、SID(会话 ID)等。who/w:查看当前登录用户的会话信息。setsid():创建新会话的系统调用,常用于创建守护进程。
典型场景:
- 用户通过 SSH 登录服务器,会创建一个新会话,其中运行的 bash 是会话首进程。
- 在终端中运行
ls &,ls进程会在后台进程组运行。 - 守护进程(Daemon)通常会创建新会话并脱离控制终端,在后台长期运行。

5223

被折叠的 条评论
为什么被折叠?



