原文地址:& 后台进程符的使用 [文摘] 作者:Biot
&
后台运行命令. 一个命令后边跟一个&
表示在后台运行.让我们通过3个例子来初步了解这个命令。
Example
1:
bash$ sleep 10
&
[1] 850
[1]+
Done
sleep 10
[1] 850
[1]+
Example 2
(在后台运行一个循环):
Example
3:
在一个脚本内后台运行一个命令,有可能造成这个脚本的挂起,等待一个按键(Enter)的响应.
看起来只有在这个命令的结果需要输出到stdout的时候, 这种现象才会出现. 这是个很烦人的现象.幸运的是,
我们有针对这个问题的解决办法.
1)
1 #!/bin/bash
2 #
test.sh
3
4 ls -l &
5 echo "Done."
bash$ ./test.sh
Done.
[bozo@localhost test-scripts]$ total 1
-rwxr-xr-x 1 bozo
bozo 34
Oct 11 15:09 test.sh
_
2)
1 #!/bin/bash
2 #
test.sh
3
4 ls -l &
5 echo "Done."
6 wait
Done.
2)
bash$ ./test.sh
Done.
[bozo@localhost test-scripts]$ total 1
-rwxr-xr-x 1 bozo
bozo 34
Oct 11 15:09 test.sh
Done.
看起来只要在后台运行命令的后边加上一个wait命令就会解决这个问题.
如果将后台运行命令的输出重定向到文件中或/dev/null中, 也能解决这个问题.
如果将后台运行命令的输出重定向到文件中或/dev/null中, 也能解决这个问题.
[文摘摘自:
高级Bash脚本编程指南-3.9.1_cn]