演示后台模式的一个经典命令就是sleep,可以在命令末尾加上字符&进入后台模式。
sleep 3000&
sleep命令会在后台(&)睡眠3000秒(50分钟)
jobs命令可以显示出当前运行在后台模式中的所有用户的进程(作业)
jobs
利用jobs命令的-l(字母L的小写形式)选项,你还能够看到更多的相关信息。除了默认信息之外, -l选项还能够显示出命令的PID。
jobs -l
后台模式非常方便,它可以让我们在CLI中创建出有实用价值的子shell。
将进程列表置入后台
(sleep 2 ; echo $BASH_SUBSHELL ; sleep 2)&
在CLI中运用子shell的创造性方法之一就是将进程列表置入后台模式。你既可以在子shell中进行繁重的处理工作,同时也不会让子shell的I/O受制于终端。
协程 coproc
协程可以同时做两件事。它在后台生成一个子shell,并在这个子shell中执行命令。
coproc sleep 10
重命名进程名:
coproc My_Job { sleep 10; }
通过使用扩展语法,协程的名字被设置成My_Job。这里要注意的是,扩展语法写起来有点麻烦。必须确保在第一个花括号({)和命令名之间有一个空格。还必须保证命令以分号(;)结尾。另外,分号和闭花括号(})之间也得有一个空格。
只有在拥有多个协程的时候才需要对协程进行命名,因为你得和它们进行通信。否则的话,让coproc命令将其设置成默认的名字COPROC就行了。
也可以将协程与进程列表结合起来产生嵌套的子shell,只需要输入进程列表,然后把命令coproc放在前面就行了。
$ coproc ( sleep 10; sleep 2 )
生成子shell的成本不低,而且速度还慢。创建嵌套子shell更是火上浇油!
网友评论