专注各种脚本编程
Baidu
加入收藏夹
本站内容有下面分类知识,欢迎您的到来^_^
shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言 oracle
当前位置:| 主页>shell基础篇>

在后台执行的&命令

百度收藏 QQ搜藏

&命令
    当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以使用&命令把作业放到后台执行。
   该命令的一般形式为:
    命令 &
    为什么要在后台执行命令?因为当在后台执行命令时,可以继续使用你的终端做其他事情。适合在后台运行的命令有f i n d、费时的打印作业、费时的排序及一些 s h e l l脚本。在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。
    不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:
    command >out.file 2>&1 &
    在上面的例子中,所有的标准输出和错误输出都将被重定向到一个叫做 out.file 的文件中。当你成功地提交进程以后,就会显示出一个进程号,可以用它来监控该进程,或杀死它。
例一:
    查找名为“httpd.conf”的文件,并把所有标准输出和错误输出重定向到f i n d . d t的文件中:
   # find /etc/httpd/ -name "httpd.conf" -print >find.dt 2>&1 &
   [2] 7832
   [1]   Done                    find /etc/ -name "httpd.conf" -print >find.dt 2>&1 &
   成功提交该命令之后,系统给出了它的进程号7832。
   # cat find.dt
    /etc/httpd/conf/httpd.conf
    [2]+  Done                    find /etc/httpd/ -name "httpd.conf" -print >find.dt 2>&1 &
   查看find.dt,可以看到执行结果
例二:
   在后台执行脚本,如:有一个叫psl的脚本
   $ps psl &
   [7878]
   用ps命令查看进程,用提交命令时所得到的进程号来监控它的运行。用p s命令和g r e p命令列出这个进程:
   # ps -x |grep 7832
   7868 pts/0    S      0:00 grep 7832
   如果系统不支持ps x命令,可以用:
   # ps -ef |grep 7832
    root      7866  7790  0 23:40 pts/0    00:00:00 grep 7832
   在用p s命令列出进程时,它无法确定该进程是运行在前台还是后台。
杀死后台进程
   杀死后台进程可以使用kill命令。当一个进程被放到后台运行时, s h e l l会给出一个进程号,我们可以根据这个进程号,用kill命令杀死该进程。该命令的基本形式为:
   kill -signal [process_number]
   现在暂且不要考虑其中的各种不同信号。
   在杀进程的时候,执行下面的命令(你的进程号可能会不同)并按回车键。系统将会给出相应的信息告诉用户进程已经被杀死。
   $kill 7832
    如果系统没有给出任何信息,告诉你进程已经被杀死,那么不妨等一会儿,也许系统正在杀该进程,如果还没有回应,就再执行另外一个kill命令,这次带上一个信号选项:
    $kill - 9 7868
    如果用上述方法提交了一个后台进程,那么在退出时该进程将会被终止。为了使后台进程能够在退出后继续运行,可以使用nohup命令。

上一篇:学会设置crontab文件 下一篇:后台执行的nohug命令

power by soyo123 2007-2008