Signals(信號) | Linux

Linux 命令行界面使用信號作為進程之間的通信,了解 Linux 信號對於管理和與運行中的進程非常重要。

解釋 Linux 信號:

Linux 信號是通知進程有關特定事件的軟件中斷。一些常用的信號包括:

  • SIGHUP (1) :
    • 挂斷信號,通常用於重新啟動進程
  • SIGINT (2) :
    • 信號中斷(Signal interrupt),程序請中斷的意思,通常由按下Ctrl + C觸發
  • SIGQUIT (3) :
    • Ctrl + D ⇒ : 直接終止你的程序
  • SIGKILL (9) :
    • 強制終止一個進程
    • program assassination(程序暗殺),shutdown immediately
  • SIGTERM (15) :
    • 要求進程優雅終止
    • Signal terminate
    • 通常是在shutdown的之前,會做這個動作,把所有程序都關閉

通常來說,如果你不知道要怎麼退出或終止的話:

  1. 先試一試Ctrl + C
  2. 不行的話再試一試Ctrl + D
  • 演示命令行:
# 背景執行yes,且不斷將內容寫入到/dev/null中(/dev/null就是不想要記錄的東西都可以往這裡丟)
yes > /dev/null &
# 搜尋程序中是"yes" keyword的進程(PID)
ps aux | grep yes

# 顯示不同的信號種類
kill -l

# 向PID 1234的進程發送SIGTERM
kill -15 1234

# 強制終止PID 5678的進程
kill -9 5678
sudo kill -SIGKILL <process id>

# 通過發送SIGHUP重新啟動進程
kill -1 7890

# 中斷進程(Ctrl + C)

進程管理:

通過利用Linux信號,用戶可以正確地控制運行中的進程,實現關機、重新啟動,甚至在必要時進行緊急終止。了解信號的差異,提高了在命令行上進行精準的進程管理。