如何檢查系統上是否有多個 .NET 應用 實例在運行?
Copyright Notice: This article is an original work licensed under the CC 4.0 BY-NC-ND license.
If you wish to repost this article, please include the original source link and this copyright notice.
Source link: https://v2know.com/article/1108
在部署 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
✅ 總結
透過 ps
、htop
或 pgrep
,我們可以快速定位 Blazor 或 .NET 應用是否異常多開。搭配 systemd 正確設定與部署流程優化,就能有效避免資源損耗與系統不穩。
This article was last edited at