首页 > 代码库 > linux job control管理

linux job control管理

  bash只能管理自己的工作而不能管理其他bash的工作,即使是root用户也无法做到.bash的工作分为前台与后台.

我们在只有一个bash的环境情况下,如果要同时进行多个进程工作,那么可以把某一工作直接丢到后台去.

 

使用"&"直接将命令丢到后台.  

-->while true;do echo a>/dev/null;done &
[1] 1778                        #[1]表示job number,1778表示循环进程号PID
-->jobs                         # jobs用来查看后台的工作状态
[1]+  Running                 while true; do   #[1]表示job number,+代表默认的取用工作,也是最近被放置到后台的工作号码
    echo a > /dev/null;
done &


#后台有两个进程
-->vi aaaaa
[2]+  Stopped                 vi aaaaa
-->
-->jbs -l                        #-l表示除了列出job number和我们执行的命令之外,同时列出进程号PID
[1]-  1778 Running                 while true; do  #[-]表示第二近被放进后台的任务,如果超过3个,则不会有更多的+/-号了
    echo a > /dev/null;
done &
[2]+ 35145 Suspended: 18           vi aaaaa    #这里job number[2]后面的"+"表示job number [2]是最近被放到后台执行的命令.



#超过3个进程子后台
-->vi bb
[3]+  Stopped                 vi bb
-->
-->jobs
[1]   Running                 while true; do
    echo a > /dev/null;
done &
[2]-  Stopped                 vi aaaaa
[3]+  Stopped                 vi bb

#jobs的参数
  • -l 表示-l表示除了列出job number和我们执行的命令之外,同时列出进程号PID
  • -r 列出正在运行的后台任务
  • -s 列出stopped状态的后台任务

-->jobs -l
[1]   1778 Running                 while true; do
    echo a > /dev/null;
done &
[2]- 35145 Suspended: 18           vi aaaaa
[3]+ 56362 Suspended: 18           vi bb
-->
-->jobs -lr
[1]   1778 Running                 while true; do
    echo a > /dev/null;
done &
-->jobs -ls
[2]- 35145 Suspended: 18           vi aaaaa
[3]+ 56362 Suspended: 18           vi bb
-->

 

将后台工作拿到前台,可以使用 fg [%]+jobnumber,"%"可以省略.

fg 默认把有加号的拿到前台来.

fg N 把job number=N的任务拿到前台.

 

linux job control管理