如何檢查系統上是否有多個 .NET 應用 實例在運行?

| Linux | 1 Reads

在部署 Blazor Server 應用時,如果不小心啟動了多個實例,可能會導致 CPU 占用飆升、系統資源耗盡,甚至 SignalR 連線異常。本文介紹幾種實用方法,幫助你快速判斷系統上是否同時運行了多個 .NET 應用(例如 YourApp.dll)的實例。


🔍 方式一:使用 ps 查看詳細進程

打開終端機,執行以下命令:

ps aux | grep YourApp.dll | grep -v grep

✅ 結果解讀:

  • 若只有一行輸出:系統中只執行了一個實例,狀況正常。

  • 若出現多行輸出:表示有多個實例同時在運行,可能存在殘留或重複啟動的情況。


🔢 方式二:僅查看實例數量

如果你只關心數量,可使用:

ps -ef | grep YourApp.dll | grep -v grep | wc -l

這會回傳一個數字,例如:

  • 1:正常

  • >1:存在異常,需要檢查並手動清理多餘的進程


🌈 方式三:使用 htop 介面查看(建議)

若系統已安裝 htop(可用 sudo apt install htop 安裝),輸入:

htop

然後按 / 搜尋:

YourApp

即可快速瀏覽所有相關的進程資訊,包括 CPU、記憶體占用情況,是否為 zombie 等。


🔍 方式四:列出所有 dotnet 類型程序

若你有多個 .NET 程序在跑,也可用此命令:

pgrep -af dotnet

這將顯示所有 dotnet 程序對應的路徑與參數,可快速判斷哪個是你的應用實例。


☑️ Bonus:自動檢查腳本片段

你可以將下面這段腳本保存為 check-app.sh,快速檢查當前是否只有一個實例:

#!/bin/bash
count=$(ps -ef | grep YourApp.dll | grep -v grep | wc -l)

if [ "$count" -gt 1 ]; then
    echo "⚠️ 發現多個 YourApp.dll 實例正在執行!共 $count 個"
else
    echo "✅ 只有一個實例在運行,狀況正常。"
fi

🧹 發現多實例怎麼辦?

執行以下命令手動清理所有實例:

sudo pkill -f YourApp.dll

然後重新啟動你的 systemd 服務:

sudo systemctl start yourapp.service

✅ 總結

透過 pshtoppgrep,我們可以快速定位 Blazor 或 .NET 應用是否異常多開。搭配 systemd 正確設定與部署流程優化,就能有效避免資源損耗與系統不穩。

This article was last edited at