管道符

|,一条竖线,这就是管道符。它的作用是把前面的命令输出的结果传递给后面的命令。这不就是个管子干的事情吗?看个例子:

[root@localhost ~]# ls 1.txt 4.txt 7.txt aac a_hard bgk.txt cuo.txt gk.txt out.txt 2 56.txt a abc anaconda-ks.cfg ca def input zheng.txt 2.txt 58.txt a9c aBc bbbk.txt cb gg.txt lesson 3.txt 5.txt aaa.txt adc bbc.txt cd gkl out [root@localhost ~]# ls|wc -l 34

ls输出的结果,刚好作为了wc命令的输入。

暂停与继续

命令运行着,我又要去干别的事情了,怎么办?暂停呗。ctrl z即可实现。

比如我们现在正打开vim在编辑文件,写到一半要切出去做别的事情,可是我又不想退出,这个时候就可以暂停它。按ctrl z:

[root@localhost ~]# vim a.txt [3] 已停止 vim a.txt

vim中按ctrl z有个小坑,那就是在编辑模式下按不了,你要切回到普通模式就可以。对vim使用不熟悉的,可以查看阿文的vim教程。

那怎么切回来呢?按fg就可以了。

查询程序后台执行(管道符任务暂停)(1)

注意,如果你把多个任务都暂停了,每个被暂停的任务都会有个数字编号:

查询程序后台执行(管道符任务暂停)(2)

这个时候,我们就可以使用fg 数字编号把想要的任务调回来。比如我想调回任务3,这样操作:

fg 3

jobs

jobs命令帮我们查看到后台有哪些进程暂停或者运行。下面的例子中,我们用vim打开了两个文件,丢到后台,它们显示的状态是‘已停止’。我们又把vmstat 1丢到后台,它是运行中。

[root@localhost ~]# vmstat 1 &> /dev/null & [3] 14700 [root@localhost ~]# jobs [1]- 已停止 vim a [2] 已停止 vim b [3] 运行中 vmstat 1 &> /dev/null &

我们仍然可以使用fg命令,将它们调到前台。

丢到后台

丢到后台我们讲两种操作方式。

bg

bg将暂停的任务放到后台运行起来,注意是运行起来。用法:bg 任务编号。拿vmstat命令来做实验。这个命令会一直输出信息到终端,我们ctrl z暂停后,可以看到输出停止了:

[root@localhost ~]# vmstat 1 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 9524 102896 40 562256 0 0 63 31 95 181 0 0 99 0 0 ^Z [1] 已停止 vmstat 1

接下来我们使用命令bg 1将其丢到后台,发现它又开始输出了:

[root@localhost ~]# bg 1 [1] vmstat 1 & [root@localhost ~]# 2 0 9524 102656 40 562420 0 0 164 53 10111 19559 0 0 100 0 0 1 0 9524 102656 40 562420 0 0 0 0 102 186 0 0 100 0 0 0 0 9524 102656 40 562420 0 0 0 0 105 189 0 1 99 0 0

我们要结束它的话,使用fg 1命令将其调到前台,然后按ctrl c就好了。

&

&符号是直接将任务丢到后台,省了ctrl z暂停的那一步,比如:

[root@localhost ~]# vmstat 1 & [1] 14695 [root@localhost ~]# procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 9524 102716 40 562420 0 0 63 31 95 181 0 ``

,