天天看點

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

在 Linux Ubuntu 伺服器上用 dnx 基于 Kestrel 成功運作一個 ASP.NET 5 站點後,怎麼也無無法退出。不管是按回車,還是按ctrl-C,還是按ctrl-Z。直接關閉用戶端 ssh 視窗,指令依然在運作,站點依然可以正常通路。

在 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 。

繼續閱讀