Sie wollen in der Lage sein, einen SIGTERM auf den laufenden Prozess zu senden:
kill <PID>
Und der Prozess sollte es richtig zur Abschaltung behandeln.
Leider ist .NET Kern nicht gut dokumentiert, aber es ist (in einer anderen Art und Weise von Mono) fähig Unix-Signale verarbeiten. GitHub issue
Wenn Sie Ubuntu mit Upstart, was Sie brauchen, ist ein Init-Skript haben, die das Kill Signal auf einer Stopp-Anforderung sendet: Example init script
eine Abhängigkeit zu Ihrem Projekt hinzufügen .json:
"System.Runtime.Loader": "4.0.0"
Dies gibt Ihnen die AssemblyLoadContext.
Dann können Sie das SIGTERM Ereignis behandeln:
AssemblyLoadContext.Default.Unloading += MethodInvokedOnSigTerm;
Hinweis:
Mit Mono, die richtige Art und Weise des Umgangs es durch die UnixSignal wäre: Mono.Unix.Native.Signum .SIGTERM
Möchten Sie Ihren Code freigeben, indem Sie eine .NET Core-Konsole in einen Ubuntu-Daemon verwandeln? – lasseschou
Das einzige, was ich getan habe, war ein Standard-Init-Skript von GitHub kopieren; Die Startfunktion ruft 'dotnet library.dll' und das stop one auf:' kill dotnet library.dll'. – user4388177