文档章节

Shell前后台进程切换

realsa
 realsa
发布于 2016/07/23 11:47
字数 445
阅读 23
收藏 3

在shell中,如果要运行某命令command,我们一般输入$ command即可。

如果需要程序后台运行,不要干扰前台的shell交互,我们一般输入$ command &

以gedit程序为例:

  • 1 查看当前有多少后台运行的命令(当前啥也没有)
fsj@fsj-Lenovo:~$ jobs
fsj@fsj-Lenovo:~$ 

其中jobs -l 选项可显示所有任务的 PID,jobs 的状态可以是 running, stopped, Terminated

  • 2 后台运行
fsj@fsj-Lenovo:~$ gedit &
[1] 31851
fsj@fsj-Lenovo:~$ jobs
[1]+  Running                 gedit &
fsj@fsj-Lenovo:~$ jobs -l
[1]+ 31851 Running                 gedit &
fsj@fsj-Lenovo:~$ 

可以看到gedit在后台处于running状态。其中[1]指的是job号为1

  • 3 根据job号来杀死该后台进程: kill %jobnumber
fsj@fsj-Lenovo:~$ kill %1
fsj@fsj-Lenovo:~$ jobs
[1]+  Terminated              gedit
fsj@fsj-Lenovo:~$ jobs
fsj@fsj-Lenovo:~$ 

也可以用$ kill pid来杀死指定进程。

  • 3 正常启动

输入图片说明

可以看到该前台进程占据了终端,我们不能做其他事情。 按ctrl+c可以终止该进程

  • 4 挂起前台进程: ctrl+z

输入图片说明

  • 5 将一个在后台(background)暂停的命令,变成继续执行: bg

输入图片说明

  • 6 将后台中的命令调后前台(foreground)继续执行: fg

输入图片说明

可以看到terminal被前台程序占据了。

最后ctrl+c终止该进程。这便是shell中前后台进程切换的一个完整例子。

除此之外,如果后台有多个命令,那么fgbg都可以加参数,指定job号:

$ bg %jobnumber
$ fg %jobnumber

这里加不加%,效果一样。

而kill命令通过job号杀死进程的时候则必须加百分号:

$ kill %jobnumber

我猜是应该是避免jobnumber和pid产生歧义吧

输入图片说明

参考

© 著作权归作者所有

共有 人打赏支持
realsa

realsa

粉丝 30
博文 84
码字总数 107087
作品 0
广州
程序员
私信 提问
Linux Shell的 & 、&& 、 ||

& 放在启动参数后面表示设置此进程为后台进程 默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以...

hanzhankang
2014/02/24
0
0
36.每日一个Linux命令----前后台进程切换(fg、bg、jobs、&)

描述:fg 和 bg 命令是进程的前后台调度命令。 操作: Ctrl + c 终止并退出当前前台命令的执行,回到shell Ctrl + z 暂停前台命令,将该进程放入后台,回到shell jobs 查看当前在后台执行的命...

詹玉香
2016/07/14
15
0
Linux任务/进程前后台切换

一、 & 加在一个命令的最后,可以把这个命令放到后台执行 ,如gftp &, 二、ctrl + z 可以将一个正在前台执行的命令放到后台,并且处于暂停状态,不可执行 三、jobs 查看当前有多少在后台运行的...

吴伟祥
09/02
0
0
后台执行好工具--screen

1.敲入命令screen会创建一个跑着shell的单一窗口,在这里面你可以跑你所需要的程序 2.新建后台的screen,并带有名字,screen -dmS XXXX,然后Ctrl+a d退出刚创建的窗口(回到进入screen前的环境...

flynewton
2010/09/13
0
1
linux学习笔记五

笔记摘抄自《linux操作系统基础及应用》 作业控制 正在执行的一个或者多个程序可形成一个作业。使用管道命令和重定向命令,一个作业可以启动多个进程。 如 : cat/etc/passwd | grep root | w...

东风冷雪
2017/11/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

线下工坊|Blockchain Coding Day:零基础教你开发DAPP(北京)

我们的目标是通过编程学习让你更了解区块链技术。这将对区块链开发初学者一次很好的体验。这里需要强调一下,编程零基础也能学会。 我们将以小组的形式,由教练带领学员完成DAPP开发。每位学...

HiBlock
33分钟前
2
0
查看内存情况

jinfo:可以输出并修改运行时的java 进程的opts。 jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat:一个极强的监视VM内存工具。...

Canaan_
34分钟前
2
0
基于对象特征的推荐

(本实验选用数据为真实电商脱敏数据,仅用于学习,请勿商用) 在上一期基于协同过滤的的推荐场景中,我们介绍了如何通过PAI快速搭建一个基于协同过滤方案的推荐系统,这一节会介绍一些如何基...

阿里云官方博客
42分钟前
2
0
Ugly Number(leetcode263)

Write a program to check whether a given number is an ugly number. Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. Example 1: Input: 6Output: true......

woshixin
今天
2
0
深度模型从研者 眼里的 似然估计 & Hessain 海森矩阵 & Fisher Information (费雪信息)

深度模型的训练的基本依据是最小化模型拟合数据的误差。旨在不仅知其然(如何构建和训练一个深度模型),还应知其所以然(为什么这样训练,可以做哪些优化)。我们就会发现,有很多研究者,在...

刘小米_思聪
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部