我爱编程程序员

Linux中的前台与后台运行

2018-07-12  本文已影响5人  学习编程王同学

事实上,在终端中如果对命令不加处理,那么命令会在前台运行。

然而有时候需要将编译、压缩等耗时的工作放到后台运行,这个时候只需要在命令末尾加上&即可。

$ tar -zcvf etc.tar.gz /etc > log.txt 2>&1 &
[1] 27914

Shell将命令放在后台运行,并返回了作业号1和进程号27914

需要注意的是,如果程序在后台运行,那么它将无法接受用户的输入,但是其输出将显示在屏幕上(可能用户正在进行其他工作,突然冒出了错误输出),因此在后台执行的程序需是不需要人工干预的、输出被妥善处理(比如重定向)的程序。

有的时候在程序开始运行之后,想要将程序放在后台执行,这时需要按^Z快捷键暂停程序,然后使用bg %作业号命令将其放入后台执行:

$ sleep 10
^Z
[1]+  Stopped                 sleep 10
$ jobs
[1]+  Stopped                 sleep 10
$ bg %1
[1]+ sleep 10 &
$ jobs
[1]+  Running                 sleep 10 &

可见,在按^Z后,程序进入暂停状态(Stopped),在将其放入后台后,程序继续执行(Running)。上面例子中jobs命令列出后台的程序。

当然,也可以使用fg %作业号将程序从后台移到前台:

$ jobs
[1]+  Running                 sleep 10 &
$ fg %1
sleep 10
$

最后,可以使用kill程序杀死背景中的程序:

$ kill -9 %1    # 强制结束工作号为1的程序
$ kill -15 %1   # 正常结束工作号为1的程序
上一篇 下一篇

猜你喜欢

热点阅读