
優雅停止程式
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
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
Process & Thread [二]
Python Global Interpreter Lock 一個GIL鎖,主要是在Cpython的解釋器上,在每個進程生成時,會有一個解釋器負責解釋 ,對
2024-7-25
PoEAA Layer分層
分層 在不管是軟體的開發或硬體架構,分層的作法到處都是,雖然分層讓層與層之間,多了一個轉換的動作, 但一
2024-6-9
Sponsor
Wechat
Alipay
