Linux

作業控制的“kill”命令與向程序發送信號的“kill”命令相同嗎?

  • November 24, 2017

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

kill 1(或kill %1

這意味著“關閉作業編號 1中的程序”。

您可以執行以下操作:

kill 1234

這意味著“將SIGTERM信號發送到 PID 1234 的程序”。

這兩個kill命令是同一個命令,還是兩個不同的命令?

我不確定你能做到kill 1(或者更確切地說,你可以嘗試,但你不會被允許,除非你的根,然後你會感到驚訝)。1這裡總是指 id 為 1 的程序,通常是init(或其中的一些變體)。

要真正回答你的問題,如果你在一個支持作業控制的 shell 中,kill將是一個內置的 shell,處理這兩種情況(管理作業和程序)。參見例如Bash 的kill命令

如果您在不支持作業控制的外殼中(有嗎?),kill通常是系統中的二進製文件/bin/kill;參見例如util-linuxkill命令。即使在帶有內置kill命令的 shell 中,您也可以通過指定其完整路徑來訪問它。此kill命令也可以在沒有 shell 的情況下訪問(用於從另一個程序中使用)。

另請參閱POSIX 的定義kill,它涵蓋了這兩種情況(但沒有指定在哪裡實現什麼)。

引用自:https://unix.stackexchange.com/questions/406829