Kill
GNU kill(1) 接受名稱參數多久了?
我們最近發現 GNU kill 超越了spec,將使用名稱作為參數並嘗試殺死所有具有該名稱的程序,這與 pkill(1) 或 killall 的某些實現相同。
我一直無法找到 GNU 的更新日誌。這個“功能”是什麼時候添加的?
您可以在 Savannah 上瀏覽 Gnu coreutils的原始碼(或在您的機器上複製儲存庫),特別是查看該實用程序的原始碼和更改日誌。
kill
沒有也從來沒有這樣的功能。do { intmax_t n = (errno = 0, strtoimax (arg, &endp, 10)); … if (errno == ERANGE || pid != n || arg == endp || *endp) { error (0, 0, _("%s: invalid process id"), arg); status = EXIT_FAILURE; } … } while ((arg = *++argv));
您連結到的聯機幫助頁是util-linux 集合中的
kill
命令。從手冊頁的日期可以看出,這個特性已經很老了。許多 Linux 系統從 GNU coreutils 或procps包中提供命令,大多數時候你會看到你的 shell 的內置命令,而不是外部命令。這些都不允許您將裸命令名作為參數傳遞。kill
在相關說明中,在 bash、ksh 和 zsh 中,您可以將任何作業規範作為參數傳遞給
kill
. 作業規範以 a 開頭,%
後跟作業編號或該作業的命令名稱的一部分。$ jobs [3] + Running sleep 9999 & [2] - Stopped vim foo [1] Running xterm & $ kill %sleep [3] + Terminated sleep 9999 & $ jobs [2] + Stopped vim foo [1] - Running xterm &