《Linux 进程管理进阶:会话、进程组与守护进程的底层逻辑与实践》

《Linux 进程管理进阶:会话、进程组与守护进程的底层逻辑与实践》
前引:在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!

目录

【一】会话

【二】前/后台进程

前台切后台进程:

查看后台进程:

后台切前台进程:

暂停后台进程:

继续运行后台进程:

【三】进程组与守护进程

(1)查看进程组

(2)守护进程

(3)守护进程原理

(4)如何创建守护进程


【一】会话

“会话”可理解为一个区域,通常一个用户登录就是一个会话,每个“会话”之前是并行的,即一个会话关闭不影响另外一个会话,在这个会话里面有许多的进程,例如:

用户登录打开的是解析OS命令的应用程序,处于OS与用户中间

注意:bash进程不是OS子进程,而是用来解析用户命令给OS的应用程序子进程

【二】前/后台进程

谁是前台/后台进程取决于谁拥有键盘,例如:键盘的Ctrl+C信号只对当前的前台进程有用

每个会话区只允许存在一个前台进程,其它只能为后台进程,那么如何互相切换?

前台切后台进程:
在命令末尾加  &,进程会被丢到后台运行(例如:./Ceshi  &)

例如:此时它变为了后台进程,是看不懂键盘输入的

查看后台进程:
执行指令 jobs ,即可查看后台进程,其中最前面的数字是作业编号(理解为后台进程编号)

例如:

后台切前台进程:
执行指令 用 fg %作业号 可以把后台作业拉到前台运行

例如:

暂停后台进程:
这里我们就采用19号信号来暂停后台进程(fg 作业号是切换到前程,我喜欢19号信号!)
继续运行后台进程:
执行指令 bg 作业号后台暂停的进程即可继续运行

【三】进程组与守护进程

(1)查看进程组

在上面我们提到了“会话”,一个会话中会存在n个进程组:相关联的进程集合

注意:前台进程组是唯一的,但前台进程组并非只有一个进程,比如:ls -l | grep ".txt" | wc -l
进程组的创建者(第一个进程)就是该进程组的组长(组长进程的 PID 就是组员的PGID

组内所有进程都继承组长的 PGID,直到组长退出或进程被迁移到其他组

简单粗暴,可使用指令:ps -efj

  • -e: 显示系统内所有进程
  • -f: 显示完整的信息(包括 UID, PID, PPID, C, STIME, TTY, TIME, CMD)
  • -j: 显示与作业控制相关的信息(包括 PGID, SID)

参数含义:

字段含义与进程组的关系
UID用户 ID进程的所有者
PID进程 ID每个进程唯一的标识符
PPID父进程 ID创建该进程的进程 ID
PGID进程组 ID核心字段! 同一个进程组内的所有进程拥有相同的 PGID。通常,进程组的组长进程的 PID 等于 PGID
SID会话 ID进程所属会话的 ID。一个会话可以包含多个进程组
CCPU 使用率进程使用的 CPU 百分比
STIME启动时间进程开始运行的时间
(2)守护进程

守护进程:守护进程是运行在后台的特殊进程,它独立于控制终端,不受用户登录或注销的影响,如何理解:我们的计算机桌面窗口可以理解为一个会话窗口,守护进程单独成一个会话窗口

(3)守护进程原理

主要原理:原进程A由父进程管理,而父进程主动退出,子进程A就变为了孤儿进程,父进程变为该会话的第一个进程,比如bash进程,再通过系统调用让A进程脱离这个终端/会话(不接受终端退出时的信号操作),成为守护进程(kill -9  -19这两个特殊的信号除外)

(4)如何创建守护进程
创建子进程,父进程主动退出:
pid_t t =fork(); if(t>0)exit(0); else { }
子进程单独成为会话:使子进程成为会话首进程,脱离原终端
setsid();
忽略一定的信号:
signal(SIGHUP, SIG_IGN); signal(SIGSTOP,SIG_IGN); .......
切换工作目录:
chdir("/");
设置文件权限掩码为 0:确保创建的文件和目录拥有最大的权限
umask(0);
可以将守护进程的日志信息打印到 /dev/null(垃圾站):
const std::string ptr ="/dev/null"; int fd = open(ptr.c_str(),O_RDWR); if(fd>0) { dup2(fd,0); dup2(fd,1); dup2(fd,2); }
                                         请忽略以下信息(仅限凑分使用):

在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!在 Linux 的世界里,进程并非孤立存在。当我们执行一条命令、启动一个服务时,这些进程会以会话(Session)为 “社交圈”、进程组(Process Group)为 “小团体” 的形式组织起来;而那些在后台默默运行、不受终端影响的守护进程(Daemon),更是 Linux 系统稳定运行的 “幕后英雄”!

Read more

不只是 Copilot:Kimi Code 正在改变写代码的方式

不只是 Copilot:Kimi Code 正在改变写代码的方式

之前介绍过,在 Claude Code 中使用 Kimi,现在Kimi也推出自己的 CLI 了。但是目前是会员专供! Kimi Code 是由 Moonshot AI(Kimi) 推出的下一代 AI 编程助手/代码智能体,作为 Kimi 会员订阅中专为开发者设计的增值权益,旨在帮助开发者更快、更智能、更高效地完成编程任务。它可以直接融入开发流程、终端工具和主流 IDE,让 AI 编程能力成为日常开发的一部分。 核心定位:你的 AI 代码伙伴 Kimi Code 不只是简单的补全工具,而是一个智能编程代理(AI Code Agent): * 自动理解问题和代码结构,回答开发者的问题。 * 辅助编写、调试、重构和测试代码,覆盖开发生命周期。 * 直接运行在终端与

By Ne0inhk

2025 嵌入式 AI IDE 全面对比:Trae、Copilot、Windsurf、Cursor 谁最值得个人开发者入手?

文章目录 * 2025 嵌入式 AI IDE 全面对比:Trae、Copilot、Windsurf、Cursor 谁最值得个人开发者入手? * 一、先给结论(个人开发者视角) * 二、2025 年 9 月最新价格与免费额度 * 三、横向体验对比(2025-11) * 1. 模型与响应 * 2. 项目理解力 * 3. 隐私与离线能力 * 四、怎么选?一句话总结 * 五、官方链接(清晰明了) * 六、结语:AI IDE 2025 的趋势 * 七、AI IDE 的底层工作原理:编辑器为什么突然变聪明了? * 1. 解析层:把你的项目拆得比你自己还清楚 * 2. 索引层:

By Ne0inhk
2026年知网AIGC检测算法大升级:这些变化你必须知道

2026年知网AIGC检测算法大升级:这些变化你必须知道

2026年知网AIGC检测算法大升级:这些变化你必须知道 2025年12月,知网悄悄升级了AIGC检测算法。 很多同学发现:之前检测过关的论文,重新查一次突然变成了红色。问群里的朋友,情况都差不多。 今天这篇文章解读一下知网新算法的变化,以及怎么应对。 知网AIGC检测3.0:主要变化 知网这次升级的版本被称为「AIGC检测3.0」。和之前相比,主要有三个变化: 变化一:检测维度增加 旧版本主要看「语言模式」,也就是用词和句式是否符合AI特征。 新版本增加了「语义逻辑」维度。它会分析句子之间的逻辑关系,判断论证过程是否「太完美」「太规整」。 人类写作会有跳跃、有转折、有不那么顺畅的地方。AI生成的文本逻辑严密、层层递进,反而不像人写的。 这就是为什么有些同学的论文明明是自己写的,但因为「逻辑太好」反而被判为AI生成。 变化二:判定阈值下调 旧版本:AIGC值≥0.7判定为疑似AI生成 新版本:AIGC值≥0.

By Ne0inhk

git的基本使用

L i n u x − g i t \Huge{Linux-git} Linux−git 文章目录 * Git 基本指令的使用 * git 基本指令 * 上传项目(本地 → 远程仓库) * 拉取项目(远程仓库 → 本地) * 仓库管理 * 本地仓库 * 远程仓库 * git remote * 让 git 忽略对某些文件的跟踪 * git 常用指令 * 全局设置 * 常用命令 * 查看命令 * 删除命令 * 代码回滚 * 远程仓库 * 分支命令 * stash 暂存 * 疑难杂症 * windows系统中文乱码(274\232\350\256\256\346\

By Ne0inhk