shell job 管理

2652阅读 0评论2012-04-18 kenvifire
分类:LINUX

linux 下经常会在shell下执行一些任务,对于这些任务我们该如何控制呢,linux提供了一些基本的命令来管理shell下的人物
这里所说的任务是指shell下执行的一整串命令,它比linux进程要高级,不过它也只是一些shell的组合而已。任务主要分为:
对任务的操作主要有两种:
以下讲解跟任务控制有关的一些命令:
  1. jobs 
      列出当前shell的所有任务;
      例如,先运行,vim test&,vim music.sh&,让vim在后台运行,运行jobs输出如下:

点击(此处)折叠或打开

  1. [1]- 已停止 vim test (工作目录:~)
  2. [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

点击(此处)折叠或打开

  1. $whoami
  2.   kenvi
  3.  $su
  4.   password:
  5.  #whoami
  6.   root
  7.  #suspend
  8.  [1]+ Stooped su
  9.  $whoami
  10.   kenvi
由上面的交互可以看出,suspend命令让shell进行了切换

5.bg [%jobnumber]
 bg命令可以让一个挂住的任务在后台运行,没有参数的话,bg默认操作最近挂住的任务
 用%jobnumber可以指定任务,例如$bg %2,让第二个任务在后台执行

6.fg [%jobnumber]
 通上,只不过是把命令放到前台执行,例如上面suspend里的示例,如果继续执行fg 1的话,又会回到root的
shell下,这是因为su任务被放倒前台执行了。

  



上一篇:最简class文件格式分析(一) class文件结构(1)
下一篇:《Hadoop权威指南(第二版)》书评