当你运行一个unix shell脚本或者命令花费很长时间时,你可以把它放到后台执行。 在这篇文章中,我们来总结一下如何执行一个后台任务,如何把一个后台任务调度到前台,如何查看所有的后台任务以及如何结束一个后台任务。
在命令后加上 & 符号,就可以后台执行任务。 例如,当你执行一个 find 命令的时候也许会花费大量时间,你可以像下面一样把它放到后台执行。下面的这个例子是在根目录下查找所有在24小时内被修改过的文件。
# find / -ctime -1 > /tmp/changed-file-list.txt &你可以像下面一样把一个已经运行的前台任务放到后台执行:
按下 Ctrl-z 挂起当前任务 使用 bg 把挂起的任务放到后台执行 例如,如果你忘了把一个任务放到后台执行,不需要结束它再重来一次后台运行。你可以像下面一面,先把当前任务挂起,然后把它放到后台执行。 # find / -ctime -1 > /tmp/changed-file-list.txt # [CTRL-Z] [2]+ Stopped find / -ctime -1 > /tmp/changed-file-list.txt # bg你可以使用 jobs 命令列出所有的后台任务。下面是一个 jobs 命令输出的情况
# jobs [1] Running bash download-file.sh & [2]- Running evolution & [3]+ Done nautilus .你也可以使用 fg 命令把一个后台任务调度到前台执行。如果不带参数,它就会把最新的后台任务调度到前台。
# fg如果你有很多后台任务,想调度一个指定的任务。那么,你可以使用 jobs 命令查看所有后台任务的 id 和命令内容。 在下面的这个例子中,fg %1 会把 job#1(下面就是 download-file.sh)调度到前台。
# jobs [1] Running bash download-file.sh & [2]- Running evolution & [3]+ Done nautilus . # fg %1如果你想结束一个指定的后台任务,使用 kill %job-number。例如,结束 job 2 使用
# kill %2说明:以上命令都可用于 Linux,我就是在 Ubuntu下使用的。 原文链接: http://www.thegeekstuff.com/2010/05/unix-background-job/。
