加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 02:18:44 所属栏目:Linux 来源:网络整理
导读:我习惯使用Topshelf创建 Windows服务.使用.NET Core和跨平台的前景,这引发了许多有趣的场景: 鉴于Topshelf尚不支持.NET Core,我如何为.NET Core创建Windows服务? (一种方法可能是创建一个常规的.NET Core控制台应用程序并使用NSSM安装它,但是它不提供启动/
我习惯使用Topshelf创建 Windows服务.使用.NET Core和跨平台的前景,这引发了许多有趣的场景:

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

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

解决方法

我不认为有这样的跨平台解决方案.服务非常适合平台,AFAIK.

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

这里有一个systemd单元文件的示例,用于将ASP.NET Core应用程序作为服务运行:https://docs.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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读