.net Core 3.0 WebApi 创建Linux守护进程的方法

 更新时间:2020年03月16日 11:38:27   作者:五蕴非空  
这篇文章主要介绍了.net Core 3.0 WebApi 创建Linux守护进程的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

我们一般可以在Linux服务器上执行 dotnet <app_assembly.dll> 命令来运行我们的.net Core WebApi应用。但是这样运行起来的应用很不稳定,关闭终端窗口之后,应用也会停止运行。为了让其可以稳定运行,我们需要让它变成系统的守护进程,成为一种服务一直在系统中运行,出现异常时也能重新启动。

Linux系统有自己的守护进程管理工具 Systemd 。systemd 是内核启动后的第一个用户进程,PID 为1,是所有其它用户进程的父进程。它直接与内核交互,性能出色,可以提供用于启动、停止和管理进程的许多强大的功能。我们完全可以将程序交给 Systemd ,让系统统一管理,成为真正意义上的系统服务。

systemctl 用于管理 systemd 的行为,替换之前的 sysvinit 和 upstart。

创建服务文件

创建服务定义文件:

vim /etc/systemd/system/qf-intecabinet.service

以下是应用的一个示例服务文件:

[Unit]
Description=运行Qf.InteCabinet服务

[Service]
WorkingDirectory=/opt/InteCabinet # 依赖环境,可以指定多个
ExecStart=/usr/bin/dotnet /opt/InteCabinet/Qf.InteCabinet.WebApi.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=qf-intecabinet
User=root # 管理服务的用户,用户必须存在并且拥有正确应用文件的所有权
Environment=ASPNETCORE_ENVIRONMENT=Production # 环境变量
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target # 该服务所在的Target

管理服务

保存该文件并启用该服务

systemctl enable qf-intecabinet.service

启动该服务

systemctl start qf-intecabinet.service

查看服务状态

systemctl status qf-intecabinet.service

查看日志

journalctl -fu qf-intecabinet.service

使用时间选项(如 --since today、--until 1 hour ago)或这些选项的组合可以减少返回的条目数

journalctl -fu qf-intecabinet.service --since "2020-01-01" --until "2020-03-01 12:00"

关闭服务

systemctl stop qf-intecabinet.service

参考资料

微软官方文档

到此这篇关于.net Core 3.0 WebApi 创建Linux守护进程的方法的文章就介绍到这了,更多相关.net Core WebApi创建守护进程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • .NET 6中为record类型自定义Equals方法

    .NET 6中为record类型自定义Equals方法

    这篇文章主要介绍了.NET 6中为record类型自定义Equals方法,record类型,这是一种新引用类型,而不是类或结构。record与类不同,区别在于record类型使用基于值的相等性,下文小编将介绍更多详细资料,需要的朋友可以参考一下
    2022-03-03
  • gridview行索引获取方法及实现代码(非js版)

    gridview行索引获取方法及实现代码(非js版)

    前一篇是用Javascript获取GridView的行索引,此篇Insus.NET使用非Javascript获取GridView的行索引,感兴趣的朋友可以了解下
    2013-01-01
  • ASP.NET中的URL过滤实现代码

    ASP.NET中的URL过滤实现代码

    最近做的一个Web项目需要对URL进行过滤,在网上搜了一下,知道J2EE有个Filter的东西,而在.NET方面,其实也可以实现
    2013-01-01
  • .Net中关于stirng转System.Type的一种实现思路详解

    .Net中关于stirng转System.Type的一种实现思路详解

    这篇文章主要给大家介绍了.Net中关于stirng转System.Type的一种实现思路的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • C# 生转换网页为pdf

    C# 生转换网页为pdf

    最近工作中遇到一个将htm转换为pdf的任务,这是一个有很有用的功能块,然而很遗憾,网上没有现成可行(包括开源/免费、易用和可维护性的考虑)方案。既然没有现成的解决方案就自己着手解决吧。
    2009-07-07
  • ASP.NET中MD5与SHA1加密的几种方法

    ASP.NET中MD5与SHA1加密的几种方法

    下面就是ASP.NET中几种加密方法。加密算法有两种,也就是上面提到的MD5和SHA1,这里我举的例子是以MD5为例,SHA1大致相同,只是使用的类不一样。
    2010-04-04
  • datagrid行内按钮(更新/删除等)操作实现代码

    datagrid行内按钮(更新/删除等)操作实现代码

    datagrid控件想必大家很是熟悉,本文将介绍下datagrid行内按钮的操作更新/删除等等,感兴趣的你可不要错过了哈,希望本文知识点可以帮助到你
    2013-02-02
  • 详解ASP.NET七大身份验证方式以及解决方案

    详解ASP.NET七大身份验证方式以及解决方案

    这篇文章主要为大家详细介绍了ASP.NET七大身份验证方式以及解决方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-08-08
  • C#(.NET)数据访问连接、查询、插入等操作的封装类

    C#(.NET)数据访问连接、查询、插入等操作的封装类

    一个C#(.NET)数据访问连接、查询、插入等操作的封装类
    2008-05-05
  • WPF气泡提示框的简单制作

    WPF气泡提示框的简单制作

    这篇文章主要为大家详细介绍了WPF气泡提示框的简单制作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09

最新评论