Job Control

-- TOC --

job是shell的一个概念,它表示一个进程组,比如一组用管道连接在一起的进程,就属于一个job。job control就是在shell下对进程组执行的各种,启停,前台或后台,终止...

Bash在交互模式下,默认会开启Job Control功能,开启方式为 set -m

检查是否开启job control:

$ echo $- | grep m
himBHs

Job Control主要有如下几个命令:

Ctrl+z:将正在前台执行的进程暂停,释放出shell prompt(命令提示符)给用户使用。

此时(可以先执行一些其它的命令):

jobs:查看当前所有job的信息,编号(job number,不是pid,在kill命令中引用,需要加上%前缀),状态和启动命令,状态有stop or running。

The jobs command lists the unfinished jobs associated with the current terminal session. You can refer to those jobs using their pid (you can use pgrep to find that out). More intuitively, you can also refer to a process using the percent symbol followed by its job number (displayed by jobs). To refer to the last backgrounded job you can use the $! special parameter.

bg [%]N: 后台执行N号job。

fg [%]N: 前台执行N号job。

关闭job control,set +m,此时只有jobs命令可以使用,其它命令都无法使用。

相关知识:

command &:后台执行一个命令,与bg启动某个job后台执行效果一样。

Ctrl-C:向命令进程发出SIGINT信号,一般会终止进程。

如果想终止后台执行的进程:

  1. fg它到前台执行,然后Ctrl-C;
  2. kill [-9] pid 或 kill [-9] %<job_number>

本文链接:https://cs.pynote.net/sf/linux/shell/202111105/

-- EOF --

-- MORE --