Linux中強制結束一個進程的終極方法


在 Linux Ubuntu 服務器上用 dnx 基於 Kestrel 成功運行一個 ASP.NET 5 站點后,怎么也無無法退出。

運行的命令如下:

/data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel
Started

但運行之后,怎么也退不出。不管是按回車,還是按ctrl-C,還是按ctrl-Z。

Started

^C^Z

直接關閉客戶端 ssh 窗口,命令依然在運行,站點依然可以正常訪問。

然后重新用 ssh 登錄上去,運行 ps all 命令發現了這個無法退出的進程。

ps all

F   UID   PID  TIME COMMAND
4     0  4993  /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64

注:如果用ps all看不到,可以用ps aux。

於是 kill 這個進程:

kill 4993

但 kill 之后,這個進程依然在運行。

后來在網上找到了終極方法 —— kill -9 :

kill -9 4993
/data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrel
Started
Killed

通過這個方法解決了問題。

注:Kestrel 的這個問題已經在基於 mono 的 dnx 中修復,基於 coreclor 的 dnx 中暫時還未修復,詳見 Terminal window hangs on linux after starting Kestrel server #108


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM