《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

深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

深挖 DeepSeek 隐藏玩法·智能炼金术2.0版本

前引:屏幕前的你还在AI智能搜索框这样搜索吗?“这道题怎么写”“苹果为什么红”“怎么不被发现翘课” ,。看到此篇文章的小伙伴们!请准备好你的思维魔杖,开启【霍格沃茨模式】,看我如何更新秘密的【知识炼金术】,我们一起来解锁更加刺激的剧情!友情提醒:《《《前方高能》》》 目录 在哪使用DeepSeek 如何对提需求  隐藏玩法总结 几个高阶提示词 职场打工人 自媒体创作 电商实战 程序员开挂 非适用场地 “服务器繁忙”如何解决 (1)硅基流动平台 (2)Chatbox + API集成方案 (3)各大云平台 搭建个人知识库 前置准备 下载安装AnythingLLM 选择DeepSeek作为AI提供商 创作工作区 导入文档 编辑  编辑 小编寄语 ——————————————————————————————————————————— 在哪使用DeepSeek 我们解锁剧情前,肯定要知道在哪用DeepSeek!咯,为了照顾一些萌新朋友,它的下载方式我放在下面了,拿走不谢!  (1)

By Ne0inhk
【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

【AI大模型】DeepSeek + 通义万相高效制作AI视频实战详解

目录 一、前言 二、AI视频概述 2.1 什么是AI视频 2.2 AI视频核心特点 2.3 AI视频应用场景 三、通义万相介绍 3.1 通义万相概述 3.1.1 什么是通义万相 3.2 通义万相核心特点 3.3 通义万相技术特点 3.4 通义万相应用场景 四、DeepSeek + 通义万相制作AI视频流程 4.1 DeepSeek + 通义万相制作视频优势 4.1.1 DeepSeek 优势 4.1.2 通义万相视频生成优势 4.2

By Ne0inhk
【DeepSeek微调实践】DeepSeek-R1大模型基于MS-Swift框架部署/推理/微调实践大全

【DeepSeek微调实践】DeepSeek-R1大模型基于MS-Swift框架部署/推理/微调实践大全

系列篇章💥 No.文章01【DeepSeek应用实践】DeepSeek接入Word、WPS方法详解:无需代码,轻松实现智能办公助手功能02【DeepSeek应用实践】通义灵码 + DeepSeek:AI 编程助手的实战指南03【DeepSeek应用实践】Cline集成DeepSeek:开源AI编程助手,终端与Web开发的超强助力04【DeepSeek开发入门】DeepSeek API 开发初体验05【DeepSeek开发入门】DeepSeek API高级开发指南(推理与多轮对话机器人实践)06【DeepSeek开发入门】Function Calling 函数功能应用实战指南07【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:本地部署与API服务快速上手08【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:Web聊天机器人部署指南09【DeepSeek部署实战】DeepSeek-R1-Distill-Qwen-7B:基于vLLM 搭建高性能推理服务器10【DeepSeek部署实战】基于Ollama快速部署Dee

By Ne0inhk

DeepSeek各版本说明与优缺点分析_deepseek各版本区别

DeepSeek各版本说明与优缺点分析 DeepSeek是最近人工智能领域备受瞩目的一个语言模型系列,其在不同版本的发布过程中,逐步加强了对多种任务的处理能力。本文将详细介绍DeepSeek的各版本,从版本的发布时间、特点、优势以及不足之处,为广大AI技术爱好者和开发者提供一份参考指南。 1. DeepSeek-V1:起步与编码强劲 DeepSeek-V1是DeepSeek的起步版本,这里不过多赘述,主要分析它的优缺点。 发布时间: 2024年1月 特点: DeepSeek-V1是DeepSeek系列的首个版本,预训练于2TB的标记数据,主打自然语言处理和编码任务。它支持多种编程语言,具有强大的编码能力,适合程序开发人员和技术研究人员使用。 优势: * 强大编码能力:支持多种编程语言,能够理解和生成代码,适合开发者进行自动化代码生成与调试。 * 高上下文窗口:支持高达128K标记的上下文窗口,能够处理较为复杂的文本理解和生成任务。 缺点: * 多模态能力有限:该版本主要集中在文本处理上,缺少对图像、语音等多模态任务的支持。 * 推理能力较弱:尽管在自然语言

By Ne0inhk