Process為什麼
為什麼sudo pkill -HUP -f 'nginx: master process'
返回程式碼129並且沒有輸出
我正在嘗試使用
pkill
and觸發 Nginx 主程序的重新載入sudo
。伺服器重新載入正常,但我只是好奇是否有人知道為什麼該命令
sudo pkill -HUP -f "nginx: master process"
返回程式碼 129?# Running as root $ pkill -HUP -f "nginx: master process" $ echo $? # Output is as expected: 0 # Running as a user (sudo is set to not prompt for a password) % sudo pkill -HUP -f "nginx: master process % echo $? # Output is weird (considering sudo should be passing along the return # code of the command it is executing): 129
在 EC2 上執行的 Ubuntu 12.04.1 LTS 上執行……令人驚訝的是,在物理電腦上執行的 Ubuntu 12.04.1 LTS(未使用雲映像安裝)執行良好。
通常,當shell返回128以上的狀態碼時,就意味著程序被信號殺死了。減去 128 得到信號編號。您的 kill 命令被信號 1(即 HUP)殺死。
pkill
小心不要自殺。但它與它的父sudo
程序相匹配。有幾種方法可以避免這種情況:
- 用於
pkill -x
僅考慮完全匹配而不考慮子字元串(如果可能,建議使用,這是避免虛假匹配的最佳方法)。- 不要使用該
-f
選項。- (不得已)編寫一個與自身不匹配的模式,例如
"[n]ginx: master process"
.