Man*_*dan 7 linux kill signals options
我读了很多关于命令使用的教程kill,主要是3种方法
kill -15 <pid>
kill -SIGTERM <pid>
kill -TERM <pid>
Run Code Online (Sandbox Code Playgroud)
出于脚本目的以及 Macos 的可移植性,将不会使用代码编号。因为kill -lmacos 与 Linux 不同。因此,在这里输入播放信号名称。
问题
kill正确或建议方法是什么?我是说:
为什么?这两种方法的存在只有一个原因,对吗?是否有强制理由使用一种方法而不是另一种方法?
环境
这种情况适用于 Ubuntu 桌面/服务器和 Fedora 工作站/服务器
Ste*_*itt 12
最便携的变体是
\nkill -s TERM -- \xe2\x80\xa6\nRun Code Online (Sandbox Code Playgroud)\n\xe2\x80\x99s 是 POSIX 中指定的形式,不带扩展名:-s后跟信号\xe2\x80\x99s 名称,如中signal.h所定义,没有SIG前缀,或 0 表示 \xe2\x80\x9cnull\xe2\x80 \x9d 信号(用于检查是否存在具有给定标识符的进程)。
SIGTERM是默认信号,因此可以使用以下规范形式将其发送到进程或进程组:
kill <pid>\nkill -- -<pgid>\nRun Code Online (Sandbox Code Playgroud)\n一般来说,在 Linux 上,大多数实现kill(包括 shell 内置函数)都接受带有或不带有SIG前缀的数字或名称信号;值得注意的例外包括内置的 dash(这是基于 Debian 的发行版中的kill默认设置)和Schily Bourne Shell的内置命令。/bin/sh
在您使用的工具支持的任何形式中,没有\xe2\x80\x99s 没有理由使用一种形式而不是另一种形式。我个人会避免使用数字形式,因为它们可能看起来不明确:是kill -9 -15要发送SIGTERM到进程组 9 和 15,还是SIGKILL发送到进程组 15?(它\xe2\x80\x99s是后者,但有些读者可能想知道。)我也会省略前缀,SIG因为\xe2\x80\x99s不能在任何地方被识别。
请注意,POSIX 确实指定了一些数字信号值:
\n| 数字 | 信号 |
|---|---|
| 0 | \xe2\x80\x9cNull\xe2\x80\x9d 信号 |
| 1 | HUP |
| 2 | INT |
| 3 | QUIT |
| 6 | ABRT |
| 9 | KILL |
| 14 | ALRM |
| 15 | TERM |