gpt4 book ai didi

linux - 如何从 .NET Core 控制台应用程序创建 Linux 守护进程?

转载 作者:IT王子 更新时间:2023-10-29 00:21:06 25 4
gpt4 key购买 nike

我习惯于使用 Topshelf 创建 Windows 服务。对于 .NET Core 和跨平台的前景,这引发了许多有趣的场景:

  1. 鉴于 Topshelf 尚不支持 .NET Core,我该如何为 .NET Core 创建 Windows 服务? (一种方法可能是创建一个常规的 .NET Core 控制台应用程序并使用 NSSM 安装它,但它不提供启动/停止的 Hook ,因此无法正常停止服务)。
  2. 你如何在 Linux 上做同样的事情?没有 Windows 服务,但是有守护进程的概念。 This answer提供了一种基本方法,但需要额外的工作并依赖于某些底层软件。
  3. 上面的 #1 和 #2 能否使用跨平台方法完成,或者是否有必要针对每个平台解决这个问题(例如使用预处理器指令)?

以上主要只是上下文。出于这个问题的目的,我想知道我需要采取哪些步骤才能使用 .NET Core 在 Linux 上运行相当于 Windows 服务。如果这可以跨平台以统一的方式完成,那就更好了。

最佳答案

我认为对此没有跨平台解决方案。服务是非常特定于平台的,AFAIK。

对于 #2,如果您想在 systemd 下运行 .NET Core,您应该能够在不更改任何代码的情况下执行此操作。您基本上需要做的就是发布您的应用程序,然后创建一个 systemd unit 文件来描述您的守护进程。 systemd 然后将处理启动、重新启动和终止您的应用程序。

此处有一个 systemd 单元文件示例,用于将 ASP.NET Core 应用程序作为服务运行:https://learn.microsoft.com/en-us/aspnet/core/publishing/apache-proxy#monitoring-our-application

[Unit]
Description=Example .NET Application

[Service]
WorkingDirectory=/var/aspnetcore/hellomvc
ExecStart=/usr/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll
Restart=always
RestartSec=10
SyslogIdentifier=dotnet-example
User=apache
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

关于linux - 如何从 .NET Core 控制台应用程序创建 Linux 守护进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44000629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com