有人可以告诉我为什么在指定 PID 时我无法杀死下面的作业吗?我可以在使用 % id 时停止作业。
Mac:~gd$ ps
PID TTY 时间 CMD
4523 ttys000 0:00.02-bash
4560 ttys000 0:00.00 GP
4609 ttys000 0:00.00 GP
Mac:~ gd$ 杀死 4560
Mac:~ gd$ 杀死 4609
Mac:~gd$ 退出
登出
有停止的工作。
Mac:~ g$ 工作
[1]- 停止 gpg
[2]+ 停止 gpg
Mac:~ gd$ 杀死 %1
gpg:信号已终止捕获...正在退出
答案1
因为kill %n
将运行 shell 内置命令,这将确保发送停止的作业,SIGCONT
以便它们能够意识到它们已被杀死。
要通过已停止作业的 PID 来实现这一点,您需要:
kill $pid
(或者kill -TERM $pid
如果你想让它明确)
进而
kill -CONT $pid
-CONT
如果你追求终极凶器,你就不需要:
kill -KILL $pid