曲径通幽论坛

标题: & 命令 -- 将作业放到后台去执行 [打印本页]

作者: beyes    时间: 2010-2-5 18:37
标题: & 命令 -- 将作业放到后台去执行
在前台运行一个作业,会占据着整个终端,此时你如果想进行另一个作业时,就需要考虑将一个作业放到后台去执行。放到后台执行的作业往往是一些费时的 find, 打印, 排序的程序或脚本。
需要用户交互的命令不要放在后台执行,因为这样就会让机器处于等待状态。
后台的作业仍然可能会将结果打印到屏幕上,从而干扰了现在正在进行的工作,这时可以将这个会产生大量输出的后台作业的输出结果重定向到某个文件中:
command >out.file 2>&1 &
上面的命令会将所有的输出结果包括错误输出重定向到 out.file 这个文件中。 2>&1 可以这么理解:2是标准错误,&1 则表示标准输出,将标准错误重定向到标准输出,而标准输出原本就是被重定向到 out.file 中的,所以这样一来标准错误也就被重定向到  out.file 中去了。
下面是个实际的命令:
linux-1o5y:~ # find /etc/ -name "passwd" -print >find.dt 2>&1 &
[1] 28686
执行了上面的命令,会得到这个作业的进程号,利用这个进程号可以 kill 掉这个后台进程。
当这个作业完成时,一般按下回车键,就会出现一个提示(然后就是 shell 命令行的输入提示符),如:
[1]+  Done                    find /etc/ -name "passwd" -print >find.dt 2>&1
输入回车键的原因是,我们希望让 shell 打印出命令行提示符。因为 shell 不会在随意的时间里打印出后台作业的状态改变信息,它仅在需要马上输出命令行提示符之前才会这么做。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2