管道符和作业控制

1、管道符

管道符之前介绍过,它表示把一个文件的输出内容传递给后面的命令。举个例子,见下图,
管道符和作业控制
关于管道符,有很多命令是可以用的,就是把前面命令输出的结果,交给后面的命令。后面会经常用到。

2、作业控制

之前说过一个快捷键,ctrl + z ,表示暂停一个任务。见下图,
管道符和作业控制
输入命令 vim 1.txt ,回车,进入文件 1.txt 编辑。这时候想暂时退出来做其他事情的话,就可以使用 ctrl +z 命令来停止,这时候就可以退出来回到命令窗口,做其他的事情。那么 vim 这个命令其实还在后台,怎么再调出来呢?输入命令 fg ,回车,见下图,
管道符和作业控制
又进入 vim 1.txt 这个页面里。fg 就是 front ground ,到前面来的意思。
管道符和作业控制
后台的运行文件可以有多个,注意上图中的数字序号,命令 jobs 可以列出后台运行的任务信息。现在要把后台运行的任务调出来的话,命令 fg 后面就要加上 id 号,例如 fg 1 或是 fg 2 。若直接输入 fg 的话,默认是跳出最后执行的一个任务。

既然有 front ground ,也就有 back ground ,命令为 bg ,调到后台去。见下图,
管道符和作业控制
将 vim a.txt 任务调到后台去,就变成上图红色框框的内容,相当于在后台运行。一般使用 vim 命令是达不到这种效果的,
现在运行命令 vmstat 1 ,这个命令后面会讲到,它会自带的显示系统的状态,而且是不停的显示。按住 ctrl + z ,就可以停止命令,然后输入 fg 命令,就可以把它调回来,接着按住 ctrl + z ,就可以停止命令,再输入 bg ,
管道符和作业控制
就可以让它在后台运行,在运行的过程中,也可以运行其他命令,命令输入正确即可,即使被打断了也没有关系。见下图,
管道符和作业控制
可以看到 vmstat 1 在运行中。接着见下图,
管道符和作业控制
输入 fg ,可以进入 vim 1.txt ,进去之后,vmstat 1 还在一直运行,输入 :q! ,强制退出,然后输入 jobs ,可以看到,只有一个任务运行。
管道符和作业控制
目前为止, vmstat 1 还在后台运行,把它调到前台,输入 fg 命令,回车,就进入前台执行命令。这时候,输入其他命令就不管用了。可以按住 ctrl + c ,直接结束命令。执行命令 jobs ,就可以看到没有任务了。
管道符和作业控制

刚才说到一个观点,运行一条像 vmstat 1 这样的命令时,使用 bg 命令把它调到后台去,显示成运行中,还是会运行的。但是这边 vim 的命令是不算的,因为停止一条 vim 命令,不管是在前台还是后台,都是不会运行、停止的状态。

接着介绍一个命令 sleep ,sleep 1000 表示暂停1000秒,整个工作暂停运行,1000秒之后才会恢复。见下图,
管道符和作业控制
bg 就是把一条命令调到后台去运行。还有一个命令,可以不用先运行命令,就能直接在后台运行,加一个 & ,见下图,
管道符和作业控制
这边说一下 xshell ,如果另外打开一个终端,运行 jobs 命令,是看不到命令的。意思就是这个终端看不到另外一个终端后台运行的命令,但是可以看到进程,输入命令 ps aux |grep sleep ,回车,
管道符和作业控制
关于 ps 命令,后面还会说到。

总结:
ctrl + z 暂停一个命令
fg 调出一个命令到前台
bg 将一个命令调到后台并运行
& 在一条命令后面加上这个符号,可以直接将命令调到后台运行
sleep +时间 暂停系统多少秒
vmstat 1 不停的显示系统状态命令