Linux的前台进程和后台进程

news/2024/11/28 17:37:57/
  1. 概念定义
    • 前台进程
      • 前台进程是和用户直接交互的进程,它会占用终端的输入/输出(I/O)设备。当一个进程在前台运行时,它会从终端读取用户输入的命令,并且将输出结果显示在终端上。例如,当你在终端中运行一个文本编辑器(如vinano)时,这个文本编辑器就是前台进程,你可以直接在这个编辑器中进行输入文字、保存文件等操作,它的输出(如打开文件后的内容显示)也会呈现在终端屏幕上。
    • 后台进程
      • 后台进程是在后台运行的进程,它不直接和终端的I/O进行交互。后台进程通常用于执行一些不需要用户立即关注的任务,比如长时间的计算任务、数据备份任务、服务器的守护进程等。例如,在服务器环境中,httpd(Apache服务器)进程大部分时间是在后台运行,它负责接收和处理来自客户端的网页请求,不需要用户在终端一直盯着它的运行过程。
  2. 运行方式和特点
    • 前台进程
      • 运行方式:通过在终端中输入命令直接启动一个进程,这个进程默认就是前台进程。例如,运行./my_program(假设my_program是一个可执行文件),这个my_program就会在前台运行。
      • 特点:
        • 独占终端:前台进程会一直占用终端,直到它运行结束或者被暂停(如通过Ctrl + Z组合键)。在它运行期间,终端不能用于其他操作,除非暂停或终止这个前台进程。
        • 对终端信号敏感:前台进程会接收并处理终端发送的信号。例如,当用户在终端中按下Ctrl + C组合键时,前台进程会收到SIGINT(中断信号)并通常会终止运行,除非它对这个信号进行了特殊的处理(如信号捕获和忽略)。
    • 后台进程
      • 运行方式:
        • 在命令后添加&符号可以将一个进程放到后台运行。例如,./my_program &,这样my_program就会在后台启动。
        • 已经在前台运行的进程可以通过Ctrl + Z组合键暂停,然后使用bg命令将其放到后台继续运行。
      • 特点:
        • 不占用终端I/O:后台进程不会阻止用户在终端进行其他操作,它的输出信息(标准输出和标准错误输出)可以通过重定向的方式保存到文件中,这样就不会在终端显示,干扰用户的其他操作。例如,可以使用> output.log 2> error.log来分别将标准输出和标准错误输出重定向到output.logerror.log文件中。
        • 对信号处理方式不同:后台进程也会接收信号,但对一些信号的默认处理方式可能和前台进程不同。例如,后台进程一般不会因为Ctrl + C而终止,除非它专门对SIGINT信号进行了处理。
  3. 进程状态和控制
    • 前台进程状态
      • 运行(R):当前台进程正常运行时,在ps命令的输出中(如ps -ef)显示为R状态,表示正在运行并占用CPU资源。
      • 暂停(T):如果通过Ctrl + Z组合键暂停了前台进程,它的状态会变为T,表示停止运行。此时可以使用fg命令将其恢复到前台继续运行。
    • 后台进程状态
      • 运行(R):后台进程在正常运行时也显示为R状态,不过它不会占用终端的I/O设备。
      • 停止(T):和前台进程类似,后台进程也可以被暂停,状态变为T。可以使用bg命令让它在后台继续运行,或者用fg命令将其恢复到前台运行。
    • 进程控制命令
      • fg(foreground)命令:用于将后台进程恢复到前台运行。例如,如果有一个后台进程的作业号(可以通过jobs命令查看)为1,使用fg %1就可以将这个后台进程恢复到前台。
      • bg(background)命令:用于让暂停的后台进程在后台继续运行。例如,对于一个暂停的后台进程,使用bg命令可以使其在后台继续运行。
      • jobs命令:用于查看当前终端后台运行的进程信息,包括作业号、进程状态、命令等内容。例如,jobs -l会列出后台进程的详细信息,包括进程ID等。

http://www.ppmy.cn/news/1550681.html

相关文章

git使用文档手册

创建一个本地代码工作空间,比如这里使用test目录作为工作目录 针对仓库地址 http://192.168.31.125:9557/poxiaoai-crm/project-crm.git。 1. 安装 Git 确保您的系统已经安装了 Git。如果未安装,请根据操作系统访问 Git 官网 下载并安装。 验证安装 …

daos源码编译

1. 前言 本文详细介绍如何在almalinux8.9上编译daos.2.0.0源码。系统环境如下: daos: 2.0.0 linux os: almalinux 8.9 linux kernel: 4.18.0-513.5.1.el8_9.x86_64之所以选择2.0.0版本,是因为daos从2.0.0开始是一个全新的架构设计&a…

ASUS/华硕灵耀14 UX3402ZA 原厂win11系统 工厂文件 带ASUS Recovery恢复

华硕工厂文件恢复系统 ,安装结束后带隐藏分区,一键恢复,以及机器所有驱动软件。 系统版本:windows11 原厂系统下载网址:http://www.bioxt.cn 需准备一个20G以上u盘进行恢复 请注意:仅支持以上型号专用…

(四)3D视觉机器人的手眼标定(眼在手外)

内容 1.背景介绍1.1 思路T_target_to_cam求解公式求解 2.操作流程 1.背景介绍 3D视觉机器人指的是机器人通过3D相机提供的3D点云视觉信息,完成某些实际的功能。   目标是将场景信息从相机坐标系变换至机械臂坐标系中,最终是获得相机到机械臂基座的空间…

CTF之密码学(RSA加密)

RSA加密算法是一种公钥加密算法,以下是对其的详细解析: 一、RSA加密算法概述 RSA加密算法由Ron Rivest、Adi Shamir和Leonard Adleman在1977年共同发明,并因此得名。它是第一个既能用于数据加密也能用于数字签名的算法。RSA的安全性基于数论…

android12锁屏界面pin码或者图案解锁居中显示

设置pin码或者图案锁屏后,在锁屏界面向上划左边,图案解锁就在左边, 向上划右边图案就在右边,如何设置一直居中显示呢? diff --git a/packages/SystemUI/res/layout/super_notification_shade.xml b/packages/SystemUI…

go-学习

文章目录 简介标识符字符串的拼接,关键字数据类型声明变量常量算术运算符关系运算符逻辑运算符位运算赋值运算符其他运算符 简介 Go 语言的基础组成有以下几个部分: 1.包声明 2.引入包 3.函数 4.变量 5.语句 & 表达式 6.注释 package main import &q…

【一篇搞定配置】网络分析工具WireShark的安装与入门使用

🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀各种软件安装与配置_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1.…