job control
因为本周要学习进程的知识点,在上周末的时候自己就想提前去了解下,于是我便拿起鸟哥看了关于进程管理方面的一些讲解,收获颇多。
首先我来解释下“工作管理”。这个工作管理(job control)是用在bash环境下,也就是说:当我们登录系统取得bash shell之后,在单一终端机下同时进行多个工作的行为管理。在这里我主要谈谈关于工作管理方面的收获。
1> 直接将命令丢到后台中执行的“&”:
我第一次见到这个命令的使用其实是前几天,学长帮我联网时他使用到了。
看看上面的图片,你会发现执行命令之后,终端上出现了一个中【1】,它被称为这个命令的一个工作号码(job number)。而后面的数字3997就是这个命令所触发的PID。
2> 将目前的工作丢到后台中,并使其处于暂停状态:Ctrl + z
这个命令在您执行一项工作之中,突然需要临时切换查找一个东西,这时你就需要用到这个命令来协助你的工作。例如,在编辑一个*.c文件时,突然不了解某个函数 或者用到的某个文件的内容时,就需要将当前工作放在后台并暂停。
看了上面的图片信息,就是在执行了Ctrl + z 之后的显示结果,【1】表示这是第一个工作,后面的加号+表示最近一个被丢进后台的工作,且目前在后台下默认会被 取用的那个工作(与下面谈到fg这个命令)。中文提示信息“已停止”代表目前这个工作的状态。
3> 查看目前的后台工作状态:jobs [-lrs]
下面的图片是在上一步操作之后进行,因此显示只有当前一个后台工作,状态为停止。
在这里再说说它的参数含义:
-l :除了列出job number 与命令串之外,同时列出PID的号码;
-r :仅列出正在后台run的工作。
-s :仅列出正在后台当中暂停的工作。
4> 将后台工作拿到前台来进行处理:fg
sweetheart@sweetheart-LU410:~$ fg %jobnumber
参数:
%jobnumber : jobnumber为工作号码(数字)。
注:此时的%是可有可无的。
sweetheart@sweetheart-LU410:~$ jobs
[1]+ 3998 已停止 vim test.c
sweetheart@sweetheart-LU410:~$ fg
此时默认取出那个+的工作,即此时的[1]
5> 将工作在后台的状态变为运行中:bg
前面我们讲到Ctrl + z可以将目前的工作丢在后台并暂停,那么如何讲一个工作在后台状态变为运行running呢?
这时就需要用到命令:bg
注:这个命令在测试过程中需要进行的快一些,读者可以在电脑上实现一下。
6> 管理后台中的工作: kill
sweetheart@sweetheart-LU410:~$ kill -signal %jobnumber
参数:
-l: 列出目前kill能够使用的信号( signal )有哪些
signal : 代表给予后面节的那个工作什么样的指示。
利用man 7 signal 可以得到:
-1:重新读取一次参数的配置文件;
-2:代表与键盘输入Ctrl + c同样的操作;
-9:立刻强制删除一个工作;
-15:以正常的程序方式终止一项工作,与-9是不一样的。
注:以上只是我对这部分的一些命令的简单陈述,详细内容可以参考《鸟哥》第十七章的内容。