萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux kill 命令詳解:參數、信號與進程終止最佳實踐

命令功能

kill 向進程發送信號,默認發送 SIGTERM (15) 請求優雅退出。若進程掛起無響應,可升級信號強度。

語法格式

kill [-s signal|-p] [-a] pid ...
kill -l [signal]

常用參數

參數說明
-s <signal>指定發送的信號 (名稱或編號),如 -s SIGKILL 或 -s 9
-l列出所有信號名稱與編號;kill -l 9 顯示 SIGKILL
-a不限制「當前進程組」,擴大匹配範圍
-p僅打印目標進程 PID,不發送信號

核心信號對照表

信號名編號用途可捕獲/忽略
SIGHUP1終端掛起/重讀配置是
SIGINT2鍵盤中斷是
SIGQUIT3鍵盤退出(生成 core)是
SIGTERM15標準終止 (默認)是
SIGKILL9強制殺死 (不可捕獲)否
SIGSTOP19暫停進程 (不可捕獲)否
SIGCONT18繼續暫停進程—

實戰示例

# 查看所有信號
kill -l

# 優雅重啟 Nginx (發送 SIGHUP)
kill -HUP $(cat /run/nginx.pid)

# 強制殺死僵死進程
kill -9 12345

# 向進程組發送信號 (負 PID)
kill -TERM -1234  # 向 PGID 1234 所有進程發送 TERM

避坑指南

  • 濫用 -9:導致文件描述符洩漏、共享內存未釋放、數據庫損壞。
  • 忽略進程組:孤兒進程可能持續佔用資源,建議配合 pkill -TERM -P <PPID> 先清理子進程。
  • 權限不足:非 root 用戶只能向同 UID 進程發信號。

現代替代工具

  • pkill / pgrep:按名稱/屬性匹配,更直觀。
  • killall:按進程名殺死所有實例。
  • systemctl stop <service>:服務級管理,處理依賴關係。
copyright © 萬盛學電腦網 all rights reserved