前言

我们一般可以在Linux服务器上执行 dotnet 命令来运行我们的.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创建守护进程内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

linux创建进程 api,.net Core 3.0 WebApi 创建Linux守护进程的方法相关推荐

  1. 在ASP.NET Core 2.0中创建Web API

    目录 介绍 先决条件 软件 技能 使用代码 第01步 - 创建项目 第02步 - 安装Nuget包 步骤03 - 添加模型 步骤04 - 添加控制器 步骤05 - 设置依赖注入 步骤06 - 运行We ...

  2. Linux守护进程service Daemon 【C语言构建简单的守护进程】

    Linux Daemon Writing HOWTO 这里视频讲的很清楚 牛客网-c/C++Linux课程-守护进程 int main() {// 1.创建子进程,退出父进程pid_t pid = f ...

  3. Net Core 6.0 webApi+sqlServer数据库教程实战

    Net Core 6.0 webApi+sqlServer数据库教程实战 教程前言 安装net core 环境 构建wepApi项目 操作数据库 接口调用 相关快速扩展 总结 教程前言 本教程从构建项 ...

  4. 升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署

    概述 容器,顾名思义是用来存放并容纳东西的器皿: 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘,它是一个抽象的概念,同时也是默默存在世上多年的技术,不仅能使应用程序间完全的隔离,而且还能在共 ...

  5. .NET Core 3.0之创建基于Consul的Configuration扩展组件

    经过前面三篇关于.NET Core Configuration的文章之后,本篇文章主要讨论如何扩展一个Configuration组件出来.如果前面三篇文章没有看到,可以点击如下地址访问 .NET Co ...

  6. linux 进程 控制终端,linux系统编程之进程(五):终端、作业控制与守护进程

    #include#define ERR_EXIT(m) do { perror(m); exit(EXIT_FAILURE); } while(0) int setup_daemon(int, int ...

  7. linux 守护进程管理 supervisor 简介 可用于docker容器内守护进程

    一.supervisor简介 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启.它是通过fork/e ...

  8. w311m linux驱动下载,腾达(Tenda)W311M V3.0网卡驱动(LINUX)

    这是腾达(Tenda)W311M V3.0网卡驱动(LINUX)下载,支持Soft AP功能. 软件说明 支持Soft AP功能. 硬件介绍 W311M是一款采用11N无线技术,无线传输速率达150M ...

  9. 进程组、session、前台任务、后台任务、守护进程

    进程组 进程组是一组进程的集合,每个进程都属于一个进程组,每个进程组有一个进程组leader进程,进程组的ID(PGID)等于leader进程的ID.对大部分进程来说,它自己就是进程组的leader, ...

  10. linux运行core控制台程序,VisualStudioCode创建的asp.net core控制台程序部署到linux

    1.asp.net core控制台程序 static void Main(string[] args) {int times=10;while(times>=0) { Console.Write ...

最新文章

  1. 从零开始一起学习SLAM | 点云到网格的进化
  2. 做iOS开发的这2年:30而立投身iOS开发嫌晚?
  3. html逻辑判断符,JavaScript中的逻辑判断符、||与!介绍
  4. Silverlight, B/S or C/S?
  5. OSPF 多区域配置
  6. WPF 基础控件之Window样式
  7. 数据结构——图-有向带权图的邻接表
  8. JavaScript-面向对象 class 继承
  9. android touch事件坐标原点,Android – 捏缩放ontouch事件坐标
  10. MySql查询语句中解决“该列没有包含在聚合函数或者groupby子句中”的相关问题方法...
  11. 检测UDP端口是否开放的命令
  12. 如何查看jdkApi在线帮助文档(下载)
  13. 搜索计算机文件夹的记录怎么删除,Win7如何删除“我的电脑”搜索栏里面的搜索记录...
  14. 学计算机编程技校排名,学编程什么学校最好?
  15. Hadoop-提高性能(调优)方法
  16. 关于ele-calendar defaultValue赋值无效
  17. 组合数学之放球问题 【附斯特林数】
  18. 【HTML5初涉】H5与H4的区别
  19. Linux GDB分析死锁
  20. java 记事本源代码_JAVA记事本源代码 收藏

热门文章

  1. position 属性和 z-index 属性对页面节点层级影响的例子
  2. jquery时间倒计时
  3. spring 4.x下让http请求返回json串
  4. 线程控制之线程和信号
  5. 【原创】CGAL使用心得
  6. Visual Studio 2010 新建完项目编译就出错
  7. 52.网络参数管理者: DHCP
  8. 1.深入理解计算机系统---计算机系统漫游
  9. 12. PHP 函数
  10. 5. 什么是命名空间