linux 下经常会在shell下执行一些任务,对于这些任务我们该如何控制呢,linux提供了一些基本的命令来管理shell下的人物
- jobs 列出当前shell下的任务
- & 在后台运行任务
- ^Z 终止当前的任务
- suspend 暂停一个任务
- fg 继续一个任务,并将该任务带到shell前台
- bg 让一个已暂停的的任务在后台运行
这里所说的任务是指shell下执行的一整串命令,它比linux进程要高级,不过它也只是一些shell的组合而已。任务主要分为:
- Foreground job前台任务:前台任务是指在当前shell里运行,并占用当前shell的任务,以至于你不能再运行其他任务
- Backgroud jbo 后台任务:后台任务是指在当前shell里运行,但是并不占用当前shell,也就是你还可以再运行其他任务
对任务的操作主要有两种:
- Suspend 暂停任务:暂停一个前台任务
- Resume 恢复任务:让一个暂停的任务继续运行
以下讲解跟任务控制有关的一些命令:
- jobs
列出当前shell的所有任务;
例如,先运行,vim test&,vim music.sh&,让vim在后台运行,运行jobs输出如下:
- [1]- 已停止 vim test (工作目录:~)
- [2]+ 已停止 vim music.sh
这表明我们后台有两个任务再暂停状态
[n] 表示任务编号,已停止表示任务的状态,vim test表示任务的命令
细心的读者会发现[2]+ 已停止 vim music.sh,[2]后面比上面一条多了一个+号,这个加号是表明该任务是默认被fg和bg命令影响的任务
2.&
&操作符表示让一个任务在后台执行
例如vim music.sh &输出:
[2] 3974
表示任务这个任务编号为2,进程ID为3974
3.^Z (Ctrl+Z)
^Z会让当前的前台任务暂停,并且它的运行状态是保留的。
例如cat /dev/zero会一直阻塞住,用^Z可以让其暂停,然后就可以用bg让它进入后台,或者用fg让他到前台继续执行
4.suspend
suspend会暂停当前的shell,它的作用就像你在当前shell下按^Z。
例如,假如你用了su命令,然后你想回到自己的shell下,可以用suspend
- $whoami
- kenvi
- $su
- password:
- #whoami
- root
- #suspend
- [1]+ Stooped su
- $whoami
- kenvi
由上面的交互可以看出,suspend命令让shell进行了切换
5.bg [%jobnumber]
bg命令可以让一个挂住的任务在后台运行,没有参数的话,bg默认操作最近挂住的任务
用%jobnumber可以指定任务,例如$bg %2,让第二个任务在后台执行
6.fg [%jobnumber]
通上,只不过是把命令放到前台执行,例如上面suspend里的示例,如果继续执行fg 1的话,又会回到root的
shell下,这是因为su任务被放倒前台执行了。
阅读(2608) | 评论(0) | 转发(0) |