用於作業控制的「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,它涵蓋了這兩種情況(但沒有指定在哪裡實現什麼)。

相關內容