无法将dotnet应用程序作为守护程序服务执行

时间:2018-05-22 09:52:35

标签: c# .net linux daemon

我正在尝试将dotnet应用程序作为守护程序服务运行,我所做的第一步是:

  1. 使用NetCore 2.0
  2. 创建了应用程序
  3. 使用dotnet publish bot
  4. 构建二进制文件

    Ubuntu终端内我创建了一个用于运行守护程序的用户:

    sudo useradd -s /sbin/nologin dotnetuser
    sudo mkdir /var/bot
    sudo cp -R /home/publish/* /var/bot
    sudo chown -R dotnetuser:dotnetuser /var/bot
    

    所以我在systemd目录下创建了一个自定义/etc/systemd/system/netcore-console-bot.service单元文件:

    [Unit]
    Description= Bot console application
    DefaultDependencies = no
    
    [Service]
    Type = oneshot
    RemainAfterExit = no
    ExecStart= /var/bot/ bot.dll
    WorkingDirectory = /var/bot
    User = dotnetuser
    Group = dotnetuser
    
    [install]
    

    我尝试使用daemon命令执行systemctl statusstart netcore-console-bot.service

    但我得到了:

      

    netcoreconsole-bot.service:退出主流程,代码=退出

    我做错了什么?

1 个答案:

答案 0 :(得分:0)

我很确定您需要从测试中进行的唯一更改是确保告诉dotnet运行dll。我的路径应该非常接近您需要执行的操作。另外,在通过应用发布和打包运行时时,可以使用self-contained deployment

[Unit]
Description= Bot console application
DefaultDependencies = no

[Service]
Type = oneshot
RemainAfterExit = no
ExecStart= /usr/bin/dotnet /var/bot/bot.dll
WorkingDirectory = /var/bot
User = dotnetuser
Group = dotnetuser

[install]