创新路
我们一直在努力

Linux—工作管理 (job control)

job control是在单一终端机介面下同时进行多个工作的行为管理 。

由於假设我们只有一个终端介面,因此在可以出现提示字节让你操作的环境就称为前景 (foreground),至於其他工作就可以让你放入背景 (background) 去暂停或运行。而且放入背景的工作是不可以使用 [ctrl]+c 来终止的。

要进行 bash 的 job control 必须要注意到的限制是:

  • 这些工作所触发的程序必须来自於你 shell 的子程序(只管理自己的 bash);

  • 前景:你可以控制与下达命令的这个环境称为前景的工作 (foreground);

  • 背景:可以自行运行的工作,你无法使用 [ctrl]+c 终止他,可使用 bg/fg 呼叫该工作;

  • 背景中『运行』的程序不能等待 terminal/shell 的输入(input)

image.png

在任务后加上&就可以让任务进入背景运行,同时会获得一个工作号1,2217为PID。

[1]+  Done                    tar -zpcf /tmp/etc.tar.gz /etc

这行字代表任务已经结束,在结束前背景中的任务也是无法用[ctrl]+c中断。

将『目前』的工作丢到背景中『暂停』:[ctrl]-z

如果我正在使用 vi ,却发现我有个文件不知道放在哪里,需要到 bash 环境下进行搜寻,此时可以不用关闭vi,而将当前任务vi放入背景任务暂停,以便于我们进行其他任务。

image.png

在 vi 的一般模式下,按下 [ctrl] 及 z 这两个按键,萤幕上会出现 [1] ,表示这是第一个工作, 而那个 + 代表最近一个被丢进背景的工作,且目前在背景下默认会被取用的那个工作 (与 fg 这个命令有关 )!而那个 Stopped 则代表目前这个工作的状态。在默认的情况下,使用 [ctrl]-z 丢到背景当中的工作都是『暂停』的状态。

如果想要知道目前有多少的工作在背景当中,就用 jobs 这个命令。

image.png

jobs的参数有

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

假如想将后台任务转移到当前任务则需要用fg命令,使用方法为fg  %job number

image.png

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机