Linux Shell 管道和后台的巧妙运用 (linux shell 管道 后台)
Linux Shell是一种非常强大的命令行操作系统。其中,管道和后台操作是两种非常常见的操作。管道可以连接多个命令,将前一个命令的输出传给下一个命令的输入,从而实现多个命令的复合操作。后台操作可以让程序在后台运行,而不会阻塞Shell的输入输出,从而提高了系统的效率。本文将介绍Linux Shell管道和后台操作的常见用法和技巧。
一、Linux Shell 管道的使用
1. 管道操作符
Linux Shell中的管道操作符是“|”(竖线),表示将前一个命令的输出传递给下一个命令的输入。例如,下面这个命令将ls命令和grep命令拼接起来,表示查找当前目录下所有文件名包含“test”的文件:
“`
$ ls | grep test
“`
2. 管道操作符的嵌套
多个管道操作符可以嵌套使用,形成复杂的命令链。例如,下面这个命令将ps命令的输出传递给awk命令进行格式化,然后再将结果传递给grep命令进行过滤:
“`
$ ps aux | awk ‘{print $2,$4}’ | grep ‘ 1\.[0-9]’
“`
在这个命令中,“|”操作符起到了串联命令的作用,将三个命令串联成了一个整体。ps aux命令用于查看系统进程信息,将进程的pid和cpu使用率输出。接着,awk命令对输出进行格式化,只输出pid和cpu使用率两个字段。grep命令用于过滤cpu使用率大于1.0的进程信息。
3. 管道和重定向操作符的结合
Linux Shell中的重定向操作符可以将命令的输入和输出重定向到文件或者其它设备上。与管道操作符结合使用,可以将命令的输出重定向到文件中。例如,下面这个命令将当前目录下的所有文件名输出到文件“filelist.txt”中:
“`
$ ls > filelist.txt
“`
在这个命令中,“>”操作符将命令的输出重定向到指定的文件中。
二、Linux Shell 后台操作的使用
1. 后台操作符
在Linux Shell中,使用“&”操作符即可将命令转移到后台运行。例如,在执行下面的命令时,Shell提示符将立即返回,而命令将在后台继续执行:
“`
$ command &
“`
注意,通过后台运行的命令不会输出到终端,如果需要查看命令的输出,可以使用重定向操作符将其输出到文件中。
2. 后台运行进程的管理
在Linux Shell中,可以使用“jobs”命令列出当前运行在后台的进程。例如,下面这个命令将当前运行在后台的进程列出来:
“`
$ jobs
“`
在输出中,每行表示一个后台进程,包括进程号、运行状态以及命令。例如,下面是jobs命令的输出结果:
“`
[1]+ Running sleep 100 &
“`
在这个示例中,“[1]+”是进程的编号,表示这是之一个后台进程。sleep命令用于暂停系统执行时间,这里用于等待100秒钟。
3. 后台进程的暂停和恢复
在Linux Shell中,可以使用“ctrl+z”操作符将正在运行的前台进程暂停,并返回Shell提示符。例如,在执行下面的命令时,Shell提示符将立即返回,而命令将暂停执行:
“`
$ sleep 100
ctrl+z
[1]+ Stopped sleep 100
“`
在这个示例中,首先执行了“sleep 100”命令,然后使用ctrl+z暂停了这个命令,最后Shell提示符出现了。
在暂停后台进程后,可以使用“fg”命令将进程恢复到前台运行,或者使用“bg”命令将进程转移为后台运行:
– fg:将后台进程恢复到前台运行。例如,下面这个命令将编号为1的进程恢复到前台运行:
“`
$ fg %1
“`
– bg:将暂停的前台进程转移到后台运行。例如,下面这个命令将编号为1的进程转移到后台运行:
“`
$ bg %1
“`
在Linux Shell中,通过管道和后台操作,我们可以轻松地完成各种复合命令和后台任务的操作。掌握这些技巧,可以帮助我们更好地使用Linux系统。