One Linux Command Per Day (9) &

当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。

可以使用&命令把作业放到后台执行。

 

该命令的一般形式为:
命令 &
为什么要在后台执行命令?因为当在后台执行命令时,可以继续使用你的终端做其他事
情。适合在后台运行的命令有 f i n d、费时的打印作业、费时的排序及一些 s h e l l脚本。在后台运
行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻
等。
不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。

演示一下:

deyuy/bin/my_shell >> ls &
[1]     17827
bldr:deyuy/bin/my_shell >> app1              cleanup           fun1.sh           quote.txt         until.sh
audit.check       for1.sh           hello.sh          report.run        var.sh
audit.log         for2.sh           hh.sh             run.log           while1.sh
awk.txt           for3.sh           if.sh             select.sh
back.log          for4.sh           if2.sh            str.txt
cache             for5.sh           nightly_build.sh  test.sh
case.sh           for6.sh           num.txt           test2.sh
说明:ls命令将在后台执行,PID:17827 可以看到,进程等在这里了,并且ls的结果打印到标准输出。因此,这种交互式的命令并不适合在后台执行。

如果放在后台运行
的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:

command >out.file 2>&1 &
在上面的例子中,所有的标准输出和错误输出都将被重定向到一个叫做 out.file 的文件中。
当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。

deyuy/bin/my_shell >> ls >out.file 2>&1 &
[1]     8100
deyuy/bin/my_shell >> kill -9 8100
[1] +  Done                    ls >out.file 2>&1 &

 

posted @ 2015-02-09 14:18  mooncreek  阅读(95)  评论(0)    收藏  举报