用于作业控制的“kill”命令与向进程发送信号的“kill”命令相同吗?

用于作业控制的“kill”命令与向进程发送信号的“kill”命令相同吗?

在 Linux 中,您可以执行以下操作:

kill 1(或者kill %1

这意味着“关闭进程工作编号 1”。

您可以执行以下操作:

kill 1234

这意味着“将SIGTERM信号发送到PID为1234的进程”。

这两个kill命令是同一个命令,还是两个不同的命令?

答案1

我不确定你能做到kill 1(或者更确切地说,你可以尝试,但你不会被允许这样做,除非你的根,然后你会感到惊讶)。1这里总是指 id 为 1 的进程,通常是init(或其某些变体)。

为了真正回答你的问题,如果你使用的 shell 支持作业控制,那么killshell 将会内置,处理这两种情况(管理作业和进程)。参见示例巴什的kill命令

如果您使用的 shell 不支持作业控制(有吗?),kill则通常是系统中的二进制文件/bin/kill;参见例如util-linuxkill命令。即使在具有内置kill命令的 shell 中,您也可以通过指定其完整路径来访问该命令。该kill命令也可以在没有 shell 的情况下访问(用于从另一个程序使用)。

也可以看看POSIX 的定义kill,涵盖了两种情况(但没有具体说明在哪里实现了什么)。

相关内容