Linux中的前台与后台运行

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

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

$ 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的程序

原文发布于微信公众号 - mwangblog(mwangblog)

原文发表时间:2018-07-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏运维小白

8.1 shell介绍

shell介绍 shell是一个命令解释器,提供用户和机器之间的交互 支持特定语法,比如逻辑判断、循环 每个用户都可以有自己特定的shell CentOS7默认...

198100
来自专栏zhangdd.com

redis官方集群安装升级ruby2.2.7版本

配置redis官方集群,开始使用yum 默认安装ruby到gem install  redis时报错,提示需要ruby>2.2.0

10420
来自专栏极客慕白的成长之路

MySQL社区版安装图文教程

在MySQL官网下载社区版mysql-installer-community,此版本为免费的。

19730
来自专栏hbbliyong

C#在.NET编译执行过程

1..NET语言的编译器接受源代码文件,并生成名为程序集的输出文件。 程序集要么是可执行的,要么是DLL 程序集里的代码并不是本机代码,而是一种名称为CIL的中...

33090
来自专栏Jerry的SAP技术分享

nodejs,python,sublime和Eclipse的包管理器

首先安装Python运行环境Python 3.7.0:https://www.python.org/downloads/release/python-370/

13120
来自专栏jiajia_deng

一步一步教你自己来编译 wxsqlite3 静态库

wxsqlite3 相比普通的 sqlite3 的好处就是可以对数据库进行加密,但这个 wxsqlite3 的编译过程真的是非常曲折,我自己也是折腾了几个小时才...

23130
来自专栏黑泽君的专栏

Eclipse重写toString()出现错误,求怎么解决?

其实是Java9和eclipse有bug冲突,但是不知道,怎么解决?先自己手写吧,以后解决了,再分享!

24410
来自专栏Samego开发资源

致需要扩展ubuntu工具认识的Linuxer | apps shell

14030
来自专栏jiajia_deng

一步一步教你自己来编译 wxsqlite3 静态库

wxsqlite3 相比普通的 sqlite3 的好处就是可以对数据库进行加密,但这个 wxsqlite3 的编译过程真的是非常曲折,我自己也是折腾了几个小时才...

12410
来自专栏WindCoder

windows 查看及结束端口占用情况方法简记

taskkill /f /im 使用中的小问题~请大虾们指教taskkill-百度百科

12220

扫码关注云+社区

领取腾讯云代金券