停止运行在红隼上运行的dotnet核心网站

部署现有.net核心网站的新版本时。 我该如何安全地停止旧的运行kestrel应用程序?

这是我想写的一个例子(伪部署脚本):

dotnet stop mysite/mysite.dll <---- this line here mv mysite/ mysite.bak/ cp newly-published-mysite/ mysite/ dotnet run mysite/mysite.dll 

killall dotnet似乎有点不安全。 如果我在一个箱子里托pipe两个小站点,它将会如何工作?

根据这个讨论 ,现在没有安全的方法来停止Kestrel。 你需要找到你的dll名称的PID并杀死它 :

 kill $(ps aux | grep 'MySite.dll' | awk '{print $2}') 

在进程树的情况下,你需要手动grep所有的孩子ID和呼叫kill每个。 就像在Microsoft.Extensions.Internal.ProcessExtensions.KillTree方法中完成的那样(正确的链接来自讨论)。

我决定使用主管来监视和管理这个过程。 这是一个很好的文章,让它成立 。

它允许简单的控制像这样的特定的dotnet应用程序:

 supervisorctl stop MyWebsiteName supervisorctl start MyWebsiteName 

它有一个巨大的优势,它可以尝试重新启动进程,如果它翻倒,或者当系统重新启动…出于任何原因。