
優雅停止程式
wordsCount: 438
readingTime: 1 min
viewers:
緣由
因為工作加入新專案,看到對停止程式有專門做處理,才回頭思考自己對這部分的研究不足
關於OS訊號
通常外部腳本,要停止process,首先應該用kill pid,其次才用kill -2 pid,最後才用kill -9 pid
方法 | 訊號 | 說明 | 是否可攔截 | 建議用途 |
---|---|---|---|---|
kill $pid |
SIGTERM (15) |
預設,優雅關閉 | ✅ 是 | ✅ 首選 |
kill -2 |
SIGINT (2) |
模擬 Ctrl+C | ✅ 是 | 可選補救手段 |
kill -9 |
SIGKILL (9) |
強制結束,無法攔截 | ❌ 否 | 最後手段 |
kill -0 |
SIGCONT (18) |
確認process是否存在 | ❌ 否 | 用來確認process是否存在 |
sh腳本內使用
kill pid # 預設 SIGTERM,請求優雅終止
sleep 2
kill -2 pid # 若沒反應,可補發 SIGINT 看看
sleep 2
kill -9 pid # 最後手段,強制結束
程式內
在主要process啟動後,每個gateway跑在不同的thread執行(看語言),所以應該在main thread中, 設置signal捕捉SIGTERM和SIGINT,後續通知給其他thread,讓他們優雅關閉
何謂優雅關閉?
- 在thread中,有等待main thread的停止通知
- 收到通知後,將結束前的工作完成,可能是套件的stop調用或是自訂的業務邏輯
Table of Contents
Related Posts
優雅停止程式2
Go 實作Demo 單一goroutine的優雅停止,當接收到中斷信號時,能夠讓程式在完成當前任務後正常退
2025-7-27
Process & Thread [三] Coroutines
共享資源 優點: 減少記憶體使用量,因為多個協程或線程可以用同一個資源。 提高速度,因為資源已經存在,而不
2025-7-27
WebSocket
緣由 因寫side project重新接觸到WebSocket,順便理清以前模糊的概念 關於WebSock
2025-5-11
Architecture_Patterns_With_Python基礎概念
Value Object 值物件 定義:單存資料,沒有特定身份,通常讓他不可變 兩個物件相等的條件是:所有值相等 python 實作方式 dataclass 例
2024-9-1
Process & Thread [一]
前言 之前在工作上,已經運用多線程,協程,但對於底層運行,還不到通透的地步,重新整理知識 基礎知識 Program 程式
2024-7-25
Sponsor
Wechat
Alipay
