【Linux】工做管理

  • 在进行工做管理的行为中,其实每一个工做都是目前bash的子进程,即彼此间是有相关性的。咱们没法以job control的方式由tty1的环境去管理tty2的bash
  • 当只有一个终端时,能够出现提示符让你操做的环境就称为前台(foreground),至于其余工做就可让你放入后台(background)去暂停或运行。要注意的是,放入后台的工做想要运行时,它必须不可以与用户互动。举例来讲,vim绝对不能够在后台里面执行(running)。由于你没有输入数据它就不会跑。并且放入后台的工做是不可使用[ctrl]+c来终止的。总之,要进行bash的job control 必需要注意到的限制是:
  • 这些工做所触发的进程必须来自于你shell的子进程(只管理本身的bash);
  • 前台:你能够控制与执行命令的这个环境称为前台(foreground)的工做;
  • 后台:能够本身运行的工做,你没法使用[ctrl]+c终止它,可以使用bg/fg调用该工做;
    后台中『执行』的进程不能等待terminal/shell的输入(input)

实际运行job控制的命令

直接将命令丢到后台中『执行』的&
$tar -rpcf /tmp/etc.tar.gz /etc &
[1] 8400 <== [job number]/PID
#在中括号内的号码为工做号码(job number),该号码与bash的控制有关
#后续的8400则是这个工做在系统中的PID
  • 在输入一个命令后,在该命令的最后面加上一个『&』表明将该命令丢到后台中,此时bash会给予这个命令一个"工做号码"(job number),就是那个[1]。至于后面那个8400则是该命令所触发的PID了。
  • 若是输入几个命令后,忽然出现以下数据
[1]+ Done tar -rpcf /tmp/etc.tar.gz /etc

就表明这个[1]工做已经完成了。shell

将目前工做丢到后台中『暂停』:[ctrl]+z
  • 按下[ctrl]+z后,屏幕上会出现以下[1]+ Stopped command[1]表示这是第一个工做。而那个+表明最近一个被丢进后台的工做,且目前在后台默认会被取用的那个工做(与fg这个命令有关)。而那个Stopped则表明目前这个工做的状态。在默认状态下,使用[ctrl]+z丢到后台中的工做都是「暂停」的。
查看目前的后台工做状态:jobs
$jobs [-lrs]
参数:
-l:除了列出job number与命令串以外,同时列出PID的好吗
-r:仅列出正在后台run的工做
-s:仅列出正在后台当中暂停(stop)的工做

查看目前的bash当中,全部的工做,与对应的PID
  • 用jobs这个命令能够查看后台中的工做,若是想要知道该job number的PID号码,能够加上-l这个参数。在输出的信息当中,有些任务号码后会有+-号码,+号表明最近被放到后台的工做号码,-表明最近最后第二个被放置到后台中的工做号码。而超过最后第三个之后的工做,就不会有+/-符号的存在了。
将后台工做拿到前台来处理:fg

fg %jobnumber
参数:
%jobnumber:jobnumber为工做号码(数字)。注意,那个%是无关紧要的。vim

先以jobs查看工做,再将工做取出
$jobs
[1]- 10314 Stopped vim ~/.bashrc
[2]+ 10833 Stopped  find / -print
$fg <==默认取出那个+的工做,即[2]
$fg %1 <==直接规定取出的那个工做号码!
让工做在后台的状态变成运行中:bg
  • bg %jobnumber将jobnumer的工做在后台启用
相关文章
相关标签/搜索