Chcesz być w stanie wysłać SIGTERM do uruchomionego procesu:
kill <PID>
I proces ten powinien obsługiwać go do zamykania poprawnie.
Niestety NET Rdzeń nie jest dobrze udokumentowana, ale jest zdolny do przenoszenia sygnałów owych (w inny sposób z mono). GitHub issue
Jeśli używasz Ubuntu z dorobkiewicz, co potrzebne jest, aby mieć skrypt startowy, który wysyła do kill sygnał na żądanie zatrzymania: Example init script
dodać zależność do projektu .json:
"System.Runtime.Loader": "4.0.0"
To daje AssemblyLoadContext.
Następnie można obsłużyć zdarzenia SIGTERM:
AssemblyLoadContext.Default.Unloading += MethodInvokedOnSigTerm;
UWAGA:
Korzystanie mono, poprawny sposób postępowania byłoby przez UnixSignal: Mono.Unix.Native.Signum .SIGTERM
Zadbaj o udostępnienie swojego kodu - zamień aplikację konsoli .NET Core w demona Ubuntu? – lasseschou
Jedyne co zrobiłem to skopiowanie domyślnego skryptu init z GitHub; funkcja startowa wywołuje 'dotnet library.dll' i stop" kill compotnet library.dll ". – user4388177