进程组、会话、终端
进程组
作用:对相同类型的进程进行管理
进程组的诞生
- 在shell里面直接执行一个应用程序,对于大部分进程来说,自己就是进程组的首进程。进程组只有一个进程
- 如果进程调用了fork函数,那么父子进程同属一个进程组,父进程为首进程
- 在shell中通过管道执行连接起来的应用程序,两个程序同属一个进程组,第一个程序为进程组的首进程
进程组id:pgid,由首进程pid决定
会话
作用:管理进程组
会话的诞生
- 调用setsid函数,新建一个会话,应用程序作为会话的第一个进程,称为会话首进程
- 用户在终端正确登录之后,启动shell时linux系统会创建一个新的会话,shell进程作为会话首进程
会话id:会话首进程id,SID
前台进程组
shell进程启动时,默认是前台进程组的首进程。
前台进程组的首进程会占用会话所关联的终端来运行,shell启动其他应用程序时,其他程序成为首进程
后台进程组
后台进程中的程序是不会占用终端
在shell进程里启动程序时,加上&符号可以指定程序运行在后台进程组里面
ctrl+z
jobs:查看有哪些后台进程组
fg+job id可以把后台进程组切换为前台进程组
终端
-
物理终端
- 串口终端
- lcd终端
-
伪终端(虚拟出来的)
- ssh远程连接产生的终端
- 桌面系统启动的终端
-
虚拟终端
linux内核自带的,ctrl+alt+f0~f6可以打开7个虚拟终端
守护进程
会话用来管理前后台进程组
会话一般连着一个终端
当退出之后前后台进程都会被关掉
守护进程
不受终端影响,就算终端退出,也可以在后台运行