【问题标题】:netcoreapp 2.1 how to keep app running as background in linuxnetcoreapp 2.1 如何让应用程序在 linux 中作为后台运行
【发布时间】:2020-03-31 19:00:31
【问题描述】:

我想知道如何让我的项目在 Linux 后台运行而不停止,如果我关闭 Linux 控制台,我想在终端关闭时保持我的项目运行而不关闭。

例如:

Terminal

如果我关闭终端 dot net run process kill auto:

enter image description here

sh run.sh

#!/bin/bash
echo "Start Server.!"
cd /usr/games/bin/Debug/netcoreapp2.1/ && dotnet MasterServer.dll

【问题讨论】:

  • 您必须将其作为服务。你试过了吗?
  • 您必须将编译后的 DLL 包装在 bash 中作为 Linux cron 作业。

标签: c# .net linux .net-core terminal


【解决方案1】:

如果您希望您的应用程序作为服务运行,您可以创建一个systemd 服务。

你可以关注this教程(监控部分):单元文件应该是这样的

[Unit]
Description=My Service

[Service]
WorkingDirectory=/var/app/myservice/production
ExecStart=/usr/bin/dotnet /var/app/myservice/production/mysite.dll
Restart=always
RestartSec=15
SyslogIdentifier=mysite
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

该单元表示您的服务将在系统日志中标识为mysite,并将在www-data 用户帐户下运行。 WorkingDirectoryExecStart 很明显,而WantedBy=multi-user.target 行指示系统将其作为启动运行。省略它以按需提供。

有关 systemd 配置,您可以查看this 指南。

【讨论】:

    【解决方案2】:

    您应该使用新的(.net core 2.1 及更高版本)IHostedService。它是您在 asp.net 核心中使用的 Web 托管服务的通用形式。它使您的应用在 Windows 上作为 Windows 服务运行,在 *nix 上作为 systemd 服务运行。

    这是有关该主题的 Microsoft 文档。

    https://docs.microsoft.com/en-us/dotnet/architecture/microservices/multi-container-microservice-net-applications/background-tasks-with-ihostedservice

    这里还有一个带有示例后台服务的 github 存储库:

    https://github.com/aspnet/Hosting/tree/release/2.1/samples/GenericHostSample

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-27
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多