鸟哥的linux私房菜读书笔记--工作管理(job control)

版权声明:本文属博主原创,转载请联系QQ528055624 https://blog.csdn.net/qq_41825534/article/details/83213551

1、工作管理

工作管理:登入系统取得bash shell之后,在单一终端机接口下同时进行多个工作的行为管理

进行工作管理的行为中,每个工作都是目前bash的子进程,彼此之间存在一定的相关性,我们无法以工作管理的方式以tty1的环境去管理tty2的bash。

假设我们只有一个终端接口。因此在可以出现提示字符让你操作的环境就称为前景(foreground),至于其他的工作就可以让你放入背景(background)去暂停或运作,放入背景的工作运作时,必须不能够与使用者进行互动,放入背景的工作不能以ctrl+c终止

要进行bash的工作管理要注意的是:

· 这些工作所触发的进程必须来自于你 shell 的子进程(只管理自己的 bash);
· 前景:你可以控制与下达指令的这个环境称为前景的工作 (foreground);
· 背景:可以自行运作的工作,你无法使用 [ctrl]+c 终止他,可使用 bg/fg 呼叫该工作;
· 背景中『执行』的进程不能等待 terminal/shell 的输入(input)

2、job control的管理

<1>直接将指令丢弃到背景中执行的&

输入指令后在指令后面加 即表示将该指令在背景中执行,执行指令后,此时bash会给该指令一个工作号码,工作号码之后跟的是该指令的PID,再往后就是指令执行的数据流。建议在使用的过程中,使用数据流重导向,将指令的输出信息输出到文件中。

<2>将目前的工作丢弃到背景中暂停:ctrl+z

在vim的一般模式下,按下ctrl+z键,屏幕上会出现[1],表示第一个工作,+表示最近一个被丢弃进背景的工作,且目前在背景下预设会被取用的那个工作(与fg指令有关),stopped表示目前这个工作的状态,预设情况下都是暂停 状态。

<3>观察目前的背景工作状态:jobs

命令:$  jobs  [-lrs]

选项与参数:
-l :除了列出 job number 与指令串之外,同时列出 PID 的号码;
-r :仅列出正在背景 run 的工作;
-s :仅列出正在背景当中暂停 (stop) 的工作。

当使用jobs命令后。显示的工作序号后面是+的表示预设的取用工作,-号表示最近最后第二个被放置到背景中的工作号码。仅输入fg指令时,会将预设的取用工作拿到前景中处理

<4>将背景工作拿到前景来处理:fg

[root@study ~]# fg %jobnumber
选项与参数: %jobnumber :jobnumber 为工作号码(数字)。注意,那个 % 是可有可无的!

                       -:表示将-号那个工作号码拿出来放到前景中处理

<5>让工作在背景下的状态变成运作中:bg

范例一:一执行 find / -perm /7000 > /tmp/text.txt 后,立刻丢到背景去暂停!
[root@study ~]# find / -perm /7000 > /tmp/text.txt
# 此时,请立刻按下 [ctrl]-z 暂停!
[3]+ Stopped find / -perm /7000 > /tmp/text.txt

范例二:让该工作在背景下进行,并且观察他!!
[root@study ~]# jobs ; bg %3 ; jobs
[1]    Stopped vim ~/.bashrc
[2]-   Stopped find / -print
[3]+  Stopped find / -perm /7000 > /tmp/text.txt
[3]+  find / -perm /7000 > /tmp/text.txt &
[1]-  Stopped vim ~/.bashrc
[2]+ Stopped find / -print
[3]   Running find / -perm /7000 > /tmp/text.txt &

<6>管理背景当中的工作:kill

[root@study ~]# kill -signal %jobnumber
[root@study ~]# kill -l
选项与参数:(-signal )
-l :这个是 L 的小写,列出目前 kill 能够使用的讯号 (signal) 有哪些?
signal :代表给予后面接的那个工作什么样的指示啰!用 man 7 signal 可知:
 -1 :重新读取一次参数的配置文件 (类似 reload);
 -2 :代表与由键盘输入 [ctrl]-c 同样的动作;
 -9 :立刻强制删除一个工作;    #强制删除一个不正常的工作
 -15:以正常的进程方式终止一项工作。与 -9 是不一样的。

3、脱机管理问题

如果我的工作需要进行一大段时间,而且又不能放置到背景下,我们可以使用at命令将工作放置到系统背景中,而与终端机无关;我们还可以使用 nohup指令,该指令可以在脱机注销后让工作仍然继续进行

命令:$  nohup       #在终端机前景下工作

命令:$  nohup &    #在终端机背景下工作

猜你喜欢

转载自blog.csdn.net/qq_41825534/article/details/83213551
今日推荐