怎么理解linux作业(job),与进程(process)的关系
1.相关概念:
shell :命令解释器,其实就是一个脚本语言解释器,有很多种(bash,ash,tcsh等),最常用的是bash.
job(作业): 是相对shell 来说的,在shell中执行一条命令,实际上就是提交了一个job,只不过有的job需要运行很长时间,有的job很快就结束。
进程:命令经过shell解析后,交给系统内核执行,会fork出很多进程,他们同属于登录shell的进程组,如下图。

所以作业是shell里面的一个概念,jobs命令只能查看当前shell自己的job,不同的shell 之间相互隔离。我们在shell里执行一条命令的时候就开启了一个作业,一个作业对应着系统中的一个进程组,如果作业中的某个进程又创建了子进程,则子进程不属于作业。
如何理解子进程不属于作业呢?其实很简单:
shell脚本自己也有语法,shell 脚本本身的运算都是作业内容,但是shell脚本中开启其他进程则不是。
$: sleep 10000 && echo "====" &
以上代码中&&前后两条shell语句执行结束,则作业结束。
2.作业的分类。
作业可以分为前台作业和后台作业。
前台作业:需要占用终端的输入、输出。
后台作业:命令后面加&,后台job不占用shell的输入输出。例如: java Test &
一个shell在某一时刻可以同时运行一个前台作业和多个后台作业。
3.作业的操作:
对正在运行的前台作业:
ctl+z : 暂停前台(终端窗口中)正在运行job
ctl+c: 终止前台(终端窗口中)正在运行job
因为前台正在运行的作业只有一个,一个作业对应一个进程(jobs -l 可以查看进程ID),所以ctl+z ctl+z 实际上是对当前前台job对应的进程发送信号。
job的其他操作:
jobs: 显示当前所有的job,包括正在运行的和暂停的。
fg+N : 让暂停的job在前台运行,N=jobs 命令查询的的job号
bg+N : 让暂停的job在后台运行,N=jobs 命令查询的的job号
kill %N : 终止job(与kill 进程不一样,这里有%),N=jobs 命令查询的的job号
扩展参考资料:
https://www.cnblogs.com/JohnABC/p/4079669.html
https://my.oschina.net/u/2467198/blog/619071
https://unix.stackexchange.com/questions/9082/difference-between-process-group-and-job
https://askubuntu.com/questions/506510/what-is-the-difference-between-terminal-console-shell-and-command-line
更多内容:http://skycity.today/?thread-192.htm
怎么理解linux作业(job),与进程(process)的关系的更多相关文章
- Linux学习-什么是进程 (process)
触发 任何一个事件时,系统都会将他定义成为一个进程,并且给予这个进程一个 ID ,称为 PID,同时依据启发这个进程的用户与相关属性关系,给予这个 PID 一组有效的权限设定.从此以后,这 个 PID ...
- 理解Linux的进程,线程,PID,LWP,TID,TGID
在Linux的top和ps命令中,默认看到最多的是pid (process ID),也许你也能看到lwp (thread ID)和tgid (thread group ID for the threa ...
- 深入理解 Linux的进程,线程,PID,LWP,TID,TGID
转载:https://www.linuxidc.com/Linux/2019-03/157819.htm 在Linux的top和ps命令中,默认看到最多的是pid (process ID),也许你也能 ...
- 第一次作业:基于Linux 4.5的进程模型与调度器分析
1.操作系统是怎么组织进程的? 1.1什么是线程,什么是进程: 刚接触时可能经常会将这两个东西搞混.简单一点的说,进程是一个大工程,线程则是这个大工程中每个小地方需要做的东西(在linux下看作&qu ...
- linux内核——会话、进程组、线程组
会话.进程组.线程组总体关系示意图 待插入 Session(会话)与进程组 Shell 分前后台来控制的不是进程而是作业(Job)或者进程组(Process Group).一个前台作业可以由多个进程组 ...
- 深入理解linux网络技术内幕读书笔记(三)--用户空间与内核的接口
Table of Contents 1 概论 1.1 procfs (/proc 文件系统) 1.1.1 编程接口 1.2 sysctl (/proc/sys目录) 1.2.1 编程接口 1.3 sy ...
- 理解 Linux 配置文件分类和使用
理解 Linux 配置文件分类和使用 本文说明了 Linux 系统的配置文件,在多用户.多任务环境中,配置文件控制用户权限.系统应用程序.守护进程.服务和其它管理任务.这些任务包括管理用户帐号.分配磁 ...
- Linux 系统应用编程——进程基础
一.Linux下多任务机制的介绍 Linux有一特性是多任务,多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务. 多任务操作系统使用某种调度(shedule)策 ...
- Linux:Day12(上) 进程
内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能 Process:运行中的程序的一个副本. 存在生命周期 Linux内核存储进程信息的固定格式 :task struct 多个任务 ...
随机推荐
- MySQL进阶 9: 联合查询 - 查询语句1 union 查询语句2 union ...
#进阶 : 联合查询 /* union 联合 合并: 将多条查询语句的结果合并成一个结果 语法: 查询语句1 union 查询语句2 union ... 应用语境: 要查询的结果来自多个表,但查询的列 ...
- springboot的简单了解与使用
1. Spring Boot 1.1. 什么是Spring Boot 1.2. Spring Boot的优缺点 1.3. 快速入门 1.3.1. 设置spring boot的parent <pa ...
- 1115 JAVAScript基础
目录 JavaScript 1.基础 1.1 注释 1.2 引入方式 2. 变量 2.1 变量声明 2.2 变量的命名规范 3.常量 4. 数据类型 4.1 数值型 Number 4.2 字符串型 S ...
- 如何DIY个性PE
前言:有时候在网络上能找到很不错的PE(无忧启动论坛),但是有时候PE的功能仍不能满足自己的需要(软件过旧,缺少某些功能),这时候就显得自己DIYPE的重要性 需要的工具: WIMTOOL(必备) 软 ...
- JAVA实现WEBSERVICE 上传下载
因公司新项目决定使用webservice与其它项目做交互,于是开始了webservice之旅. 初入webservice的时候第一个接触的工具叫axis2,网上有着大量的简单案例.功能很强大,代 ...
- C#上传下载文件
方法一.通过Ajax方式上传文件(input file),使用FormData进行Ajax请求 <div > <input type="file" name=& ...
- 编译安装 openmcu
1. install toolssudo apt-get install libtool autoconf flex bison automake pkg-config 2.yasm-1.3.0sed ...
- 11 - Vue模板语法
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. 所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML ...
- Java进阶知识24 Spring的事务管理(事务回滚)
1.事务控制概述 1.1.编程式事务控制 自己手动控制事务,就叫做编程式事务控制. Jdbc代码: connection.setAutoCommit(false); ...
- 【线性代数】7-2:线性变化的矩阵(The Matrix of a Linear Transformation)
title: [线性代数]7-2:线性变化的矩阵(The Matrix of a Linear Transformation) categories: Mathematic Linear Algebr ...