`
444878909
  • 浏览: 637958 次
文章分类
社区版块
存档分类
最新评论

linux bg/fg/jobs命令学习

 
阅读更多

为了方便用户进行任务管理和控制,linux提供了bg/fg/jobs这几条命令来轻松调度任务。

从以下命令执行来看,可以知道bg/fg/jobs这几条命令都是linux shell的特殊内建命令。
所以在执行bg/fg/jobs这几条命令时,当前shell能够自己解释而不需要额外创建两个
child process来完成这件事。
$ which bg
$ which fg
$ which jobs
$ whereis bg
bg:
$ whereis fg
fg:
$ whereis jobs
jobs:
$ type bg
bg is a shell builtin
$ type fg
fg is a shell builtin
$ type jobs
jobs is a shell builtin

当你在linux shell下执行一条很耗时的命令或程序时,
比如使用grep命令全盘递归搜索"strlen"这个字符串,
$ grep -nrws "strlen" ./
这可能会导致linux shell被占用很长时间,而此时如果用户想要使用shell做另外一件事,
难道必须要等到上一件事做完?
针对这个问题,有两种对应的办法:
1. 使用组合键CTRL+Z将当前shell中正在进行的任务丢到后台并暂停执行,这时用户
可以重新得到shell;
^Z
[1]+ Stopped grep --color -nrws "wpa_supplicant" ./
2. 在执行耗时的任务时,将任务直接放到后台执行,
$ grep -nrws "strlen" ./ &
这样任务就一直会在后台运行。

问题1:使用的是grep命令,可是CTRL+Z暂停之后为什么是grep --color?
猜测可能是别名的原因,使用alias命令查看:
$ alias
...
alias grep='grep --color'
...
果然如猜测那样。关于alias命令,可以参考下面这篇博文:
http://blog.csdn.net/boyxulin1986/article/details/11891067

2. 如何确认后台中有哪些任务?
使用jobs命令可以查看后台中的任务:
$ jobs
[1]- Stopped grep --color -nrws "wpa_supplicant" ./
[2] Running grep --color -nrws "wpa_supplican" ./
其中1/2是jobid,用户可以根据jobid来控制指定的任务运行。
请特别注意,jobid与PID是两个完全不相关的东西。

3. 后台正在运行的任务可以被暂停吗?
CTRL+Z无法暂停后台正在运行的任务。用户可以先将任务放到前台,再使用CTRL+Z
将其暂停并放入后台。
$ fg 2
grep --color -nrws "wpa_supplican" ./
^Z
[2] Stopped grep --color -nrws "wpa_supplican" ./
$ jobs
[1]- Stopped grep --color -nrws "wpa_supplicant" ./
[2]+ Stopped grep --color -nrws "wpa_supplican" ./

4. 如何运行暂停在后台的任务?
如果你希望继续在后台运行任务,使用bg命令并指定jobid,
$ bg 2
[2]+ grep --color -nrws "wpa_supplican" ./
如果你希望将后台任务(包括正在运行的任务和暂停的任务)放到前台运行,
使用fg命令并指定jobid,
$ fg 2
grep --color -nrws "wpa_supplican" ./
此时shell就被你的前台任务占领了。

曾经遇到过一个问题:
1. 我的程序修改了一些环境变量比如PATH/LD_LIBRARY_PATH等,然后将其运行在前台;
2. 使用CTRL+Z将我的程序暂停并放入后台;
3. 在shell下面测试已经暂停的程序。
会出现因为找不到shared library从而导致程序无法运行等问题。
后来经过确认发现,原来是因为前后台的环境(环境变量不一样所导致)不一样引起的。

分享到:
评论

相关推荐

    linux__jobs命令_bg_fg

    一。& 最经常被用到 这个用在一个命令的最后,可以把这个命令放到后台执行 ...如果后台中有多个命令,可以用 fg %jobnumber将选中的命令调出,%jobnumber是通过jobs命令查到的后台正在执行的命令的序号(不是pid)

    Linux基本命令的使用

    • ls -l 列出文件详细信息 l(list) • ls -a 列出当前目录下所有文件及目录,包括隐藏的 a(all) • mkdir 创建目录 • rmdir 命令删除目录 • cd /var 切换目录 ...• bg、jobs、fg命令控制进程显示

    在Linux中查看及终止正在运行的后台程序方法

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

    Linux命令笔记

    第一部分:常用命令 常用命令/文件处理 0:基础功能 1:ls 显示文件目录 语法:ls 选项[-ald][文件或目录] 2:cat 显示文件内容(内容少适合) 语法:cat[文件名] 3:tac 显示文件内容 语法:tac[文件名] 4:more 分页...

    Linux常用命令

    Linux常用命令,linux后台运行和关闭、查看后台任务 fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令

    详解linux后台运行和关闭、查看后台任务

    fg、bg、jobs、&、nohup、ctrl+z、ctrl+c 命令 一、& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh & #每10s在后台执行一次test.sh脚本 二、ctrl + z 可以将一个正在前台执行的...

    linux 进程管理学习总结

    进程管理常用的命令,jobs,fg,bg,kill,killall,ps,pstree,top,nice,renice 及命令中显示的参数说明。

    shell0.10.0解析版

    1. 测试jobs, bg , fg, "Ctrl+c","Ctrl+z" 命令 (jobs有个bug,ctrl+c的时候,子程序后台的程序都回死掉) (而子进程里如果有while循环的话,ctrl+c 却杀不死while) 第9步骤: alias 别名命令 实现:alias 与 ...

    Linux指令速查手册.part1.rar

    掌握Linux系统的指令及其用法是学习Linux系统的基础。本书详细地介绍了常用Linux指令的功能、语法、参数说明以及具体的操作实例。全书共讲解指令412个,共有实例760个。  本书中所讲指令按照字母顺序和功能顺序...

    2009 达内Unix学习笔记

    集合了 所有的 Unix命令大全 登陆服务器时输入 公帐号 openlab-open123 telnet 192.168.0.23 自己帐号 sd08077-you0 ftp工具 192.168.0.202 tools-toolss 老师测评网址 http://172.16.0.198:8080/poll/ 各个 ...

    操作系统重点

     4.Linux系统的进程调度方式、策略和常用调度命令:nohup,at,batch,jobs,fg,bg。  5.中断处理过程:保存现场、分析原因、处理中断和中断返回。  6.shell命令的一般执行过程。  【了解】  1.调度的三个级别...

    ubuntu部落(适合初学者,可以作为初学者的手册)

    Ubuntu 相对其它Linux 发行版的主要特点.. 2 基本操作................................................................... 3 进入系统........................................................... 3 命令行提示...

Global site tag (gtag.js) - Google Analytics