Bg, Fg, &, Ctrl-Z - 5个管理Unix后台任务的例子

时间:2021-10-30 21:51:33

  当你运行一个unix shell脚本或者命令花费很长时间时,你可以把它放到后台执行。
  在这篇文章中,我们来总结一下如何执行一个后台任务,如何把一个后台任务调度到前台,如何查看所有的后台任务以及如何结束一个后台任务。

1. 执行一个后台任务

  在命令后加上 & 符号,就可以后台执行任务。
  例如,当你执行一个 find 命令的时候也许会花费大量时间,你可以像下面一样把它放到后台执行。下面的这个例子是在根目录下查找所有在24小时内被修改过的文件。

# find / -ctime -1 > /tmp/changed-file-list.txt &

2. 使用 Ctrl-zbg 命令把当前任务调度到后台执行

  你可以像下面一样把一个已经运行的前台任务放到后台执行:

  1. 按下 Ctrl-z 挂起当前任务
  2. 使用 bg 把挂起的任务放到后台执行
     
    例如,如果你忘了把一个任务放到后台执行,不需要结束它再重来一次后台运行。你可以像下面一面,先把当前任务挂起,然后把它放到后台执行。
# find / -ctime -1 > /tmp/changed-file-list.txt

# [CTRL-Z]
[2]+ Stopped find / -ctime -1 > /tmp/changed-file-list.txt

# bg

3.使用 jobs 命令查看所有的后台任务

  你可以使用 jobs 命令列出所有的后台任务。下面是一个 jobs 命令输出的情况

# jobs
[1] Running bash download-file.sh &
[2]- Running evolution &
[3]+ Done nautilus .

4. 使用 fg 命令把一个后台任务调度到前台

  你也可以使用 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

5. 使用 kill % 结束一个指定的后台任务

  如果你想结束一个指定的后台任务,使用 kill %job-number。例如,结束 job 2 使用

# kill %2

说明:以上命令都可用于 Linux,我就是在 Ubuntu下使用的。
原文链接: http://www.thegeekstuff.com/2010/05/unix-background-job/