Linux系统-前台任务组,后台任务组

2024-06-03 04:36

本文主要是介绍Linux系统-前台任务组,后台任务组,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 前台进程
  • 后台进程
  • 新命令
    • jobs
    • fg 【后台进程组序号】
    • ctrl+z组合键信号 和 bg命令
      • ctrl+z组合键信号
      • bg 【后台进程组序号】
  • session会话
        • 此时我们关闭本次的会话,我们的后台进程是否也会退出呢?
  • 总结


前台进程

在我们远程登录Linux服务器后,执行ls或者自己的可执行程序时,其实都是在前台运行的,前台运行的程序具备什么特点呢?

我们执行一个每隔一秒打印一次hello world的程序
在这里插入图片描述

当我们用键盘输入pwd,并没有为我们执行pwd命令,这是因为我们的键盘所发送的信息给了这个正在每隔一秒打印一次hello world的前台进程。

后台进程

要想将一个进程设为后台运行,很简单 只需要

./a.out &
在这里插入图片描述

这样我们所执行的文件就在后台运行了,此时我们的程序仍然在不断像显示器打印hello world,而如果你现在使用ctrl+c会发现是无法终止该后台进程的!且我们现在键盘输入ls,pwd命令可以正常执行。

现象可以总结出:

  1. 后台进程仍然可以向显示器打印消息。
  2. 键盘输入只能给前台进程,所以ctrl+c无法终止后台进程

那么我们是不是可以得出另一个结论,谁占有键盘谁就是前台进程,所以 前台进程只有一个

新命令

jobs

先来创建两个后台文件
在这里插入图片描述
当我们创建一个后台进程时,会在屏幕显示这样的信息
在这里插入图片描述
这里告诉大家,【1】的 1 是 该session会话中的后台进程组序号,至于为什么里我称为进程组等会再说。
而后面的5493则为该进程组ID。
在这里插入图片描述
可以发现我们的第一个sleep进程的进程ID 就是 它的进程组ID,说明这个第一个sleep进程是组长,且进程组ID是根据组长的进程ID保持一致。

fg 【后台进程组序号】

该命令可以根据后台进程组序号,将该进程组的全部进程移动到前台。
在这里插入图片描述
移动到前台后就可以使用ctrl+c终止该进程。当然想要终止后台进程也可以使用kill命令。

当我们使用fg命令将进程组移动到前台时,bash作为一个进程组,它也需要被移动到后台当中。

ctrl+z组合键信号 和 bg命令

ctrl+z组合键信号

在这里插入图片描述

当我们按下ctrl+z会向前台进程组发送19号SIGSTOP信号。 此时该暂停的前台进程组会被移动到后台,后台的bash移动到前台。


bg 【后台进程组序号】

如果我们要唤醒被暂停的后台进程组,则可以使用bg 【后台进程组序号】来唤醒它在后台继续运行。
在这里插入图片描述


session会话

当我们使用xshell远程登录远端的Linux云服务器时,其实就是向Linux系统申请一次会话,于是我们就有了一个会话窗口,并给我们分配一个bash。

在这里插入图片描述
这里我们就能很直观的看见,我们在该会话中所运行的进程的sessionID都是一样的,而这个sessionID正是我们的bash的PID。

此时我们关闭本次的会话,我们的后台进程是否也会退出呢?

在这里插入图片描述
在这里插入图片描述
出乎意料的是 虽然我们的会话关闭了,但是该会话的后台进程并没有被退出。
在这里插入图片描述

总结

通过上述的知识内容,我们是否可以创建一个不会受任何终端影响的进程,只要我们的云服务器不关机,这个进程就不会被终止!

这就是下一节课进程守护的内容,我们基于上节课的翻译字典服务再添加上上进程守护的功能。

这篇关于Linux系统-前台任务组,后台任务组的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1026024

相关文章

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Spring Boot 集成 Quartz并使用Cron 表达式实现定时任务

《SpringBoot集成Quartz并使用Cron表达式实现定时任务》本篇文章介绍了如何在SpringBoot中集成Quartz进行定时任务调度,并通过Cron表达式控制任务... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启动 Sprin

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J