Dotnet 应用程序由于守护程序无法正常工作而启动

我使用 开发了一个简单的应用程序NetCore,该应用程序每次执行时都将内容写入文件,这是代码:


using System;

using System.IO;


namespace SimpleApp

{

   class Program

   {

       static void Main(string[] args)

       {

          using (StreamWriter writer = new StreamWriter("log.txt", true))

          {

              writer.WriteLine("Hello World");

          }

       }

   }

}

所以如果我以这种方式启动应用程序:dotnet SimpleApp.dll我会得到一个log.txt文件Hello World。


现在,我正在尝试创建一个 linux 守护进程,我没有这方面的经验,所以我写了我在互联网上学到的东西,我创建了一个console.service包含以下结构的服务 cakked :


[Unit]

Description = Hello World Daemon


[Service]

ExecStart = /usr/bin/dotnet /home/my username/Desktop/publish/SimpleApp.dll

Restart = on-failure


[Install]

WantedBy = multi-user.target

所以基本上我有一个描述,我设置ExecStart了我的dotnet安装路径和应用程序的路径。


后来我有一个Install如果理解得好告诉systemctl服务可以为每个用户运行,对吗?


后来,我复制了system文件夹中的服务:


sudo cp console.service /lib/systemd/system

我启用了它:


sudo systemctl daemon-reload 

sudo systemctl enable console.service

所以,我执行了服务:


sudo systemctl start console.service

当我打印状态时:


systemctl status console.service

将显示为:

http://img1.mukewang.com/60e00d960001818907340468.jpg

问题是在文件夹内publish(ExecStart 中指定的应用程序路径)我此时没有任何 log.txt。

为什么?


泛舟湖上清波郎朗
浏览 189回答 1
1回答

慕勒3428872

由于您只为文件指定了相对路径,因此它将在服务的工作目录中创建。您可以更改"log.txt"为完整路径或在 .service 文件中设置工作目录:[Service]WorkingDirectory=/path/you/want/the/file/to/be/in…
打开App,查看更多内容
随时随地看视频慕课网APP