Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

When deploying a new version of an existing .net core website. How do I first safely stop the old running kestrel app?

Here is an exmaple of what I would like to write (Pseudo deployment script):

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

killall dotnet seems a little unsafe. How would it work if I were hosting two small sites on one box?

Accordingly to this discussion, there is no safe way to stop Kestrel now. You need to find a PID by name of your dll and kill it:

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

In case of process tree, you need to manually grep all child IDs and call kill for each. Like it was done in Microsoft.Extensions.Internal.ProcessExtensions.KillTree method (correct link from the discussion).

exactly what I wanted for a dev script. I also found that it was picking up the grep pipe process and added this to remove it (before awk). | grep -v 'grep' – JonnyRaa Feb 1, 2019 at 12:29

I have decided to use supervisor to monitor and manage the process. Here is an excellent article on getting it set up.

It allows simple control over specific dotnet apps like this:

supervisorctl stop MyWebsiteName
supervisorctl start MyWebsiteName

And it has one huge advantage in that it can try restart the process if it falls over, or when the system reboots... for whatever reason.

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.