Linux
作業控制的“kill”命令與向程序發送信號的“kill”命令相同嗎?
在 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-linux
的kill
命令。即使在帶有內置kill
命令的 shell 中,您也可以通過指定其完整路徑來訪問它。此kill
命令也可以在沒有 shell 的情況下訪問(用於從另一個程序中使用)。另請參閱POSIX 的定義
kill
,它涵蓋了這兩種情況(但沒有指定在哪裡實現什麼)。