Linux进程组 会话

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+Zbgfg命令)。
  • 生命周期:用户登录创建会话,注销或会话首进程退出时,会话终止,相关进程通常会被终止。

相关命令 / 函数

  • ps -o pid,pgid,sid,tty,comm:查看进程的 PID、PGID(进程组 ID)、SID(会话 ID)等。
  • who/w:查看当前登录用户的会话信息。
  • setsid():创建新会话的系统调用,常用于创建守护进程。

典型场景

  • 用户通过 SSH 登录服务器,会创建一个新会话,其中运行的 bash 是会话首进程。
  • 在终端中运行ls &ls进程会在后台进程组运行。
  • 守护进程(Daemon)通常会创建新会话并脱离控制终端,在后台长期运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值