文章目录
- 前台进程
- 后台进程
- 新命令
- jobs
- fg 【后台进程组序号】
- ctrl+z组合键信号 和 bg命令
- ctrl+z组合键信号
- bg 【后台进程组序号】
- session会话
- 此时我们关闭本次的会话,我们的后台进程是否也会退出呢?
- 总结
前台进程
在我们远程登录Linux服务器后,执行ls或者自己的可执行程序时,其实都是在前台运行的,前台运行的程序具备什么特点呢?
我们执行一个每隔一秒打印一次hello world的程序
当我们用键盘输入pwd,并没有为我们执行pwd命令,这是因为我们的键盘所发送的信息给了这个正在每隔一秒打印一次hello world的前台进程。
后台进程
要想将一个进程设为后台运行,很简单 只需要
./a.out &
这样我们所执行的文件就在后台运行了,此时我们的程序仍然在不断像显示器打印hello world,而如果你现在使用ctrl+c会发现是无法终止该后台进程的!且我们现在键盘输入ls,pwd命令可以正常执行。
现象可以总结出:
- 后台进程仍然可以向显示器打印消息。
- 键盘输入只能给前台进程,所以ctrl+c无法终止后台进程
那么我们是不是可以得出另一个结论,谁占有键盘谁就是前台进程,所以 前台进程只有一个!
新命令
jobs
先来创建两个后台文件
当我们创建一个后台进程时,会在屏幕显示这样的信息
这里告诉大家,【1】的 1 是 该session会话中的后台进程组序号,至于为什么里我称为进程组等会再说。
而后面的5493则为该进程组ID。
可以发现我们的第一个sleep进程的进程ID 就是 它的进程组ID,说明这个第一个sleep进程是组长,且进程组ID是根据组长的进程ID保持一致。
fg 【后台进程组序号】
该命令可以根据后台进程组序号,将该进程组的全部进程移动到前台。
移动到前台后就可以使用ctrl+c终止该进程。当然想要终止后台进程也可以使用kill命令。
当我们使用fg命令将进程组移动到前台时,bash作为一个进程组,它也需要被移动到后台当中。
ctrl+z组合键信号 和 bg命令
ctrl+z组合键信号
当我们按下ctrl+z会向前台进程组发送19号SIGSTOP信号。 此时该暂停的前台进程组会被移动到后台,后台的bash移动到前台。
bg 【后台进程组序号】
如果我们要唤醒被暂停的后台进程组,则可以使用bg 【后台进程组序号】来唤醒它在后台继续运行。
session会话
当我们使用xshell远程登录远端的Linux云服务器时,其实就是向Linux系统申请一次会话,于是我们就有了一个会话窗口,并给我们分配一个bash。
这里我们就能很直观的看见,我们在该会话中所运行的进程的sessionID都是一样的,而这个sessionID正是我们的bash的PID。
此时我们关闭本次的会话,我们的后台进程是否也会退出呢?
出乎意料的是 虽然我们的会话关闭了,但是该会话的后台进程并没有被退出。
总结
通过上述的知识内容,我们是否可以创建一个不会受任何终端影响的进程,只要我们的云服务器不关机,这个进程就不会被终止!
这就是下一节课进程守护的内容,我们基于上节课的翻译字典服务再添加上上进程守护的功能。