【Linux】进程间关系和守护进程

本文详细介绍了Linux系统中的进程组、作业控制、会话管理、守护进程的概念与创建方法。涵盖了进程组与作业的区别、作业控制命令、守护进程的特点及创建步骤等内容。

一、进程组

  • 是一个或多个进程的集合,进程组的ID等于组长进程ID

  • 进程组不会随着进程组长的退出而退出,只要有一个进程存在,则该进程组就存在

  • sleep 100 | sleep 200 | sleep 300 &     他们属于兄弟进程,&表示将进程放在后台运行

  • ps axj | head -n 1

    • a:列出当前用户及所有其他进程

    • x:列出有控制终端及无控制终端的进程

    • j:列出与作业控制相关的信息

杀死了进程组长,但进程组依然存在

 

 

二、作业

多个进程组成,一个后台作业也可以由多个进程组成,Shell可以运行一个前台作业和任意多个后台作业---->作业控制

但子进程不属于作业),一旦前台运行的作业结束,shell就把自己提到前台。因此在执行程序的时候,无法在Shell中输入命令,一旦程序运行结束shell又被提到前台,用户可以继续输入命令。

  • 概念

    • Shell分前后台来控制的不是进程而是作业或进程组,一个前台作业可以由

  • 作业与进程组的区别

    • 如果作业中的某个进程又创造了子进程,则子进程不属于作业

  • 运行程序时shell的处理:

    •  当作业(进程组)运行起来的时候,shell就把自己提到后台(子进程还在

#include<stdio.h>
int main()
{
    pid_t pid = fork();
    if(pid=-1)
    {
        perror("fork");
        exit(-1);
    }
    else if ( pid==0 )
    {
         while(1)
         printf("child  %d is running\n",getpid());
         sleep(1);
    }
    else
    {
        int i=5;
        while(i)
        printf("parent %d is going to dead %d \n",getpid(),i--);
        sleep(1);
    }
    retrun 0;
}


      当程序开始执行后,前台新起了一个作业,5s内shell无法接受任何命令,此时前台作业不是shell,但5s后父进程退出子进程还在时,shell已经可以接受命令,此时shell变成了前台进程,父进程死亡,该程序前台作业结束,子进程还在则被提到后台运行。

ctrl+c ----退出前台作业(捕捉到信号后将信号发给所有前台作业),杀掉的是整个作业而不是进程

ctrl+z----将进程放到后台运行(处于停止状态,什么都不做,杀不掉,提到前台后立即退出)

T停止状态   kill杀不掉(收到kill信号后依旧停止什么都不干,但提到前台后开始运行会处理kill信号,立即退出)

 

三、作业控制(shell前后台控制)

jobs                 查看会话中所有工作进程组

可执行程序+&  将进程放在后台运行

ctrl+z               将该进程提到后台,并处于停止状态

bg+作业号       让某个停止的作业在后台继续运行

fg + 作业号      将作业提到前台进程

ctrl+c              退出前台作业,杀死整个前台作业

 

Linux中进程的5个状态

  • S 睡眠状态

  • T 停止状态

  • Z 僵尸状态

  • D 不可中断睡眠状态

  • R 运行状态

四、作业控制有关的信号

  • SIGTTIN信号:使进程停止

  • SIGCONT信号:让进程继续运行

  • Ctrl+z:向所有前台进程发送SIGTSTP信号,SIGTSTP使进程停止,以后台作业的形式存在

  • 当将一个进程从前台提到后台的时候,会给进程发送一个SIGCONT信号让进程继续运行

五、bash和shell

  • 媒婆---Shell   

    • shell在系统和用户之间起到一个桥梁的作用,并且shell包含bash,是bash等脚本解释器的统称

    • shell是一个命令语言解释器,拥有自己内建的shell命令集。也就是说shell是用户和Linux之间的程序接口,shell将用户在提示符下输入的每个命令都转换成机器语言传给Linux内核。

  • 王婆---Bash   

    • bash是一种shell,Linux中有许多shell,bash是里面通用的一种。bash是众多shell中的其中一个,bash是终端会话的首进程,会话ID就是首进程ID,也就是bash的ID。

六、会话

  • 会话是一个或多个进程组的集合,一个会话可以有一个控制终端,建立控制终端

连接的会话首进程被称为控制进程一个会话中,包含控制进程(会话首进程),一个前台和任意后台进程组,每启动一个终端系统就会启动一个会话,启动一个终端会先启动bash,bash就相当于会话首进程,其PID就是会话ID。

注意:并不是所有会话都有一个终端,会话可以脱离一个终端。TTY终端号

  • SID:会话ID

  • pstree

七、守护进程(Daemon)

  • 概念

    • 守护进程又称精灵进程,是运行在后台的一种特殊进程,它独立于控制终端并且周期性的执行某种任务或等待处理某些发生事件。

    • Linux启动时会有很多系统服务进程,这些进程没有控制终端,不能直接和用户交互,其他进程都是在用户登录或运行时创建 ,在运行结束或用户注销时终止,但系统服务进程(守护进程)不受用户登录注销的影响,一直运行着,这种进程成为守护进程

  • 特点:

    • 运行在后台

    • 独立于控制终端

    • 周期性的执行某种任务

    • 系统服务进程(守护进程)不受用户登录注销的影响,一直运行着

  • Linux中大多数服务器就是用守护进程实现的,如ssh服务器、ftp服务器、Web服务器 、httpd等均是用守护进程完成的。

  • ps操作系统中的所有进程的信息  ps -ef  -axj  -aux显示进程的不同信息

守护进程信息

  • 凡是TPGID一列是-1的都是没有控制终端的进程,即守护进程

  • COMMAND一列用[ ]括起来的名字,表示内核线程,这些线程在内核中创建,没有空间代码,没有程序文件、没有命令行

  • 守护进程通常采用以d结尾的名字,表示Daemon

    • init是系统的第一个进程

    • undevd负责维护/dev目录下的设备文件

    • acpid负责管理电源

    • syslogd负责维护/var/log下的日志文件

 

八、创建守护进程

  • pid_t setsid(void)

    • 作用:创建一个新的会话(Session)并成为Session Leader

    • 头文件:#include<unistd.h>

    • 返回值:成功返回新创建的会话的id(当前进程id),出错返回-1

    • 注意:调用该函数的进程不允许是当前进程组的Leader,否则该函数返回-1

  • 调用成功的结果:

    • 创建一个新的会话,当前进程成为Session Leader,当前进程id即为会话id

    • 创建一个新的进程组,当前进程成为进程组的组长,当前进程的id即为进程组id

    • 如果当前进程原本有一个控制终端,则它失去这个控制终端(原来控制终端是打开的,可读写,但只是一个普通的打开文件,而不是控制终端了)

  • 创建一个守护进程的方法

    • 让进程进入后台的方法

      • 命令行:程序+&

      • 程序内部:父子进程中杀死父进程,子进程会进入后台

    • 独立于控制终端

      • setsid()如果调用进程不是进程组长,则创建一个新会话。man 2 系统调用

    • 再次fork()保持子进程不是会话的首进程

 

  • daemon( ) 创建守护进程的系统函数

  • getcwd()获取当前路径

 

  • 杀死守护进程

    • 给特定进程发送信号

    • kill  -2   

    • kill  -9

    • 无法接收ctrl +c

    • ctrl+c 不能杀死shell

 

标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
在金融行业中,对信用风险的判断是核心环节之一,其结果对机构的信贷政策风险控制策略有直接影响。本文将围绕如何借助机器学习方法,尤其是Sklearn工具包,建立用于判断信用状况的预测系统。文中将涵盖逻辑回归、支持向量机等常见方法,并通过实际操作流程进行说明。 一、机器学习基本概念 机器学习属于人工智能的子领域,其基本理念是通过数据自动学习规律,而非依赖人工设定规则。在信贷分析中,该技术可用于挖掘历史数据中的潜在规律,进而对未来的信用表现进行预测。 二、Sklearn工具包概述 Sklearn(Scikit-learn)是Python语言中广泛使用的机器学习模块,提供多种数据处理建模功能。它简化了数据清洗、特征提取、模型构建、验证与优化等流程,是数据科学项目中的常用工具。 三、逻辑回归模型 逻辑回归是一种常用于分类任务的线性模型,特别适用于二类问题。在信用评估中,该模型可用于判断借款人是否可能违约。其通过逻辑函数将输出映射为0到1之间的概率值,从而表示违约的可能性。 四、支持向量机模型 支持向量机是一种用于监督学习的算法,适用于数据维度高、样本量小的情况。在信用分析中,该方法能够通过寻找最佳分割面,区分违约与非违约客户。通过选用不同核函数,可应对复杂的非线性关系,提升预测精度。 五、数据预处理步骤 在建模前,需对原始数据进行清理与转换,包括处理缺失值、识别异常点、标准化数值、筛选有效特征等。对于信用评分,常见的输入变量包括收入水平、负债比例、信用历史记录、职业稳定性等。预处理有助于减少噪声干扰,增强模型的适应性。 六、模型构建与验证 借助Sklearn,可以将数据集划分为训练集测试集,并通过交叉验证调整参数以提升模型性能。常用评估指标包括准确率、召回率、F1值以及AUC-ROC曲线。在处理不平衡数据时,更应关注模型的召回率与特异性。 七、集成学习方法 为提升模型预测能力,可采用集成策略,如结合多个模型的预测结果。这有助于降低单一模型的偏差与方差,增强整体预测的稳定性与准确性。 综上,基于机器学习的信用评估系统可通过Sklearn中的多种算法,结合合理的数据处理与模型优化,实现对借款人信用状况的精准判断。在实际应用中,需持续调整模型以适应市场变化,保障预测结果的长期有效性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值