我对通过 kill 命令使用百分号来停止工作感到困惑。我在 kill 的手册页中找不到任何表明可以使用百分号的文档。有人可以向我解释这个解释是否隐藏在其他地方,或者为什么使用这个%
标志?
kill -s 19 %1
将停止 ID 为 1 的作业
Gil*_*il' 12
该%
标志介绍了工作规范。简单的说,job就是一个已经被shell启动的进程,可以在前台运行(如果是,那你就不能和shell交互了),在后台运行,挂起,或者已经死了(但外壳还没有注意到,否则工作就会消失)。
%1
表示作为该 shell 作业表中第一个条目的作业。不同shell实例中的作业编号是不相关的,它们与进程ID无关。您可以使用该jobs
命令查看该 shell 中的作业列表。其他操作作业的有用命令是fg
和bg
,分别将作业移动到前台或后台。其他操作作业的方法是按Ctrl+Z暂停前台作业并&
在末尾运行命令以将其直接发送到前台。
有一个独立的kill
实用程序,还有一个名为kill
. 该命令作为单独的实用程序存在,因此可以从其他程序调用它而无需启动 shell。该命令作为 shell 内置命令存在,因此即使没有足够的资源来启动kill
进程也可以调用它,并且它可以理解 shell 内部数据结构。
作业是内部 shell 数据结构,因此外部kill
命令不知道它们。手册页记录了外部命令。要查找有关kill
与作业相关的功能的文档,请查看 shell 的文档,例如bash或zsh。然后参考关于工作的部分:bash,zsh。壳手册也是其中的命令jobs
,fg
和bg
被记录。
小智 1
有多种方法可以在 shell 中引用作业。字符\xc2\xa0%\xc2\xa0引入了作业规范(jobspec)。作业号\xc2\xa0n\xc2\xa0 可称为\xc2\xa0%n。还可以使用用于启动作业的名称的前缀或使用其命令行中出现的子字符串来引用作业。\n只需命名作业即可将其置于前台:\xc2\xa0%1 \xc2\xa0 是 \xc2\xa0''fg %1'' 的同义词,将作业 1 从后台带到前台。同样,\xc2\xa0''%1 &''\xc2\xa0 在后台恢复作业 1,相当于\xc2\xa0''bg %1''。
\n