我应该在不使用命令的情况下终止作业 #3 kill %3
。我该怎么做?我似乎找不到答案。我只能使用一命令。我该如何做呢?
答案1
这是教科书上的复习题。
很容易找到讨论的教科书和其他文件kill %3
。在他们这样做的地方,这个问题的重点很明显。它没有涉及命令的替代方案kill
。它没有涉及使用进程 ID 号代替 shell 作业说明符。它涉及的是:
要终止后台正在运行的程序,请键入kill %n
,其中n
是要终止的作业号。例如,键入kill %3
终止作业号 3。有些程序需要的不仅仅是kill
命令才能终止。kill
使用以下语法增强命令的终止能力:kill -9 %n
— 布伦特·D·赫斯洛普、戴维·安吉尔(1990 年)。 掌握 SunOS. Sybex. 第 189 页
事实上有时SIGTERM
不起作用。因此,假设它没有起作用(因为进程捕获并处理了信号但未终止),您需要尝试发送一些不同的信号。书籍也给出了答案:
一个好的一般规则是先尝试TERM
、INT
或HUP
信号来停止进程。如果它们失败,则使用KILL
信号。— Robin Anderson、Andy Johnston (2002)。“日常系统管理”。Unix 的释放。Sams Publishing。ISBN 9780672322518。第 404 页。
进一步阅读
- “
kill
“。Unix 命令简介. 印第安纳大学。 - https://unix.stackexchange.com/a/19475/5132
- https://unix.stackexchange.com/questions/8916/
- 无用地使用
kill -9
. 彼得·N·斯坦梅茨。
答案2
如果你想终止后台作业,kill
可以使用一个非常简单的命令:
kill $(jobs -p 3)
-p
仅列出 pid,数字 3 是 jobspec。
答案3
您可以始终fg 3
(前台作业#3),然后使用 Control-C 或退出命令的任何正常方法取消它。
答案4
您可以使用pkill
(或)killall
函数