怎么理解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 多个任务 ...
随机推荐
- 使用Python进行3DES加密-pyDes
pyDes.py源码 ############################################################################# # Documenta ...
- uni-app之tabBar的自己配置
1.因为产品相关的的权限,需要配置不同的导航,这时候需要自定义导航.分离出来的就是一个小的组件.(tabBar.vue) 此处暂时用的html插入的代码,能粘贴到vue文件即可. <templa ...
- Oracle自动化安装脚本-part02-亲试ok
此为网络配置文件 network.conf [PUBLIC-IP] IP-LIST:192.168.7.198,192.168.8.221 HOSTNAME-LIST:mysql-198,RAC2 ...
- Python+request 测试结果结合unittest生成测试报告《四》
测试报告示例图: 目录结构介绍: 主要涉及更改的地方: 1.导入 Common.HTMLTestRunner2文件 2.run_test.py文件中新增测试报告相关的代码 具体代码实现: 1 ...
- appium+python 【Mac】UI自动化测试封装框架介绍 <四>---脚本的调试
优秀的脚本调试定位问题具备的特点: 1.方便调试. 2.运行报错后容易定位出现的问题. 3.日志的记录清晰 4.日志可被存储,一般测试结果的分析在测试之后会进行,那么日志的存储将会为后期的分析问题带来 ...
- Jenkins 自动化构建
def pipeId = 1130561944231279390 def pipeLogId def isTagOrBranch def tagOrBranch def imageId def add ...
- sql server 的 out 和output
sql中out与output --SQLQuery Create By Faywool create proc Proc_OutPutTest--创建 @numA int,--nu ...
- java常用函数
if(null == list || list.size() ==0 ){ } list.isEmpty()和list.size()==0 没有区别 isEmpty()判断有没有元素而size()返回 ...
- bzoj 1924
所用点的编号为输入顺序,因为只有在存在联通门的宫室中存在宝藏.其余点不考虑 对于每一行,选定一个横天门,向该行横天门连双向边,其余门单向边纵列同理自.由门用map判周围八个点是否存在,存在即连边 Ta ...
- [Luogu] 遥远的国度
https://www.luogu.org/problemnew/show/P3979 3种情况 x=root,很显然此时应当查询整棵树 lca(root,x)!=x ,此时直接查询x的子树即可,与换 ...