现在的位置: 首页 > 综合 > 正文

linux 进程,作业控制,控制终端,会话期

2017年11月14日 ⁄ 综合 ⁄ 共 1275字 ⁄ 字号 评论关闭

最近看书的时候,发觉看的比较糊涂了,这些概念被抹的特别乱。先整理下,希望对我们以后的理解有所帮助。

进程:是一个程序在其自身的虚拟地址空间的一次执行活动。

程序只是静态的数据和指令的集合,进程是一个程序的动态执行过程,具有生命周期,是动态产生和消亡的。

------------------

系统启动后的第一个进程是init,pid是1,是内核唯一直接运行的进程,

系统启动后,init进程会创建login进程等待用户登录,当用户登录系统后,login进程就会为用户启动shell进程,此后用户运行的进程都是由shell衍生出来的。
------------
进程分类:

交互进程:有一个Shell启动的进程,可在前台运行,也可在后台运行。

批处理进程:不与特定的终端相关联,提交到等待队列中顺序执行的进程。

守护进程:在Linux启动时初始化,需要时运行于后台的进程。

-------------
进程启动方式:

1.手工启动:由用户输入命令直接启动一个进程,分为:

前台启动--直接输入命令

后台启动--在命令行后使用&命令

2.调度启动:事先设置,根据用户要求让系统自动启动

--------------
作业控制
作业控制,指控制当前正在运行的进程的行为,也称为进程控制。是Shell的一个特性,使用户能在多个独立进程间进行切换。

常用命令

命令或快捷键    功能说明

cmd&     该命令在后台运行

Ctrl+d     终止一个正在前台运行的进程(含有正常含义)

Ctrl+c     终止一个正在前台运行的进程(含有强行含义)

Ctrl+z     挂起一个正在前台运行的进程

jobs      显示后台作业和被挂起的进程

bg       重新启动一个挂起的作业,并在后台运行

fg       把一个在后台运行的作业放到前台运行

常用的作业标识符

标识符      说明

%N      第N号作业

%S      以字符串S开头的被命令行调用的作业

%?S     包含字符串S的被命令行调用的作业

%+      默认作业(前台最后结束的作业,或后台最后启动的作业),等同于%%

%-      第二默认作业
-------------------
对话期
一个对话期是一个或多个进程组的集合。
一个进程可以调用setsid()建立一个新的对话期。
建立与控制终端连接的对话期首进程称为控制进程。
-------------------
控制终端,会话期,前台进程,后台进程之间的关系
新建终端 看成是建立了 一个session
shell就是session里的控制首进程 也就是建立与控制终端连接的对话期首进程
然后我可以在shell提示符下通过管道建立一组命令,并把它放到后台运行 cmd1 | cmd2 | cmd3 &
这样cmd1 cmd2 cmd3  属于后台进程组 它们是无法接受控制台输入的,包括中断退出这些信号都不会对它们产生作用
这时我还可以在shell命令提示符下运行另外一组命令 cmd4 | cmd5 | cmd6
这个就是前台进程组 你键入中断或者退出信号 都只会对它们起作用
而shell进程即控制进程是不会退出或者被中断的

 

 

抱歉!评论已关闭.