为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
泛舟湖上清波郎朗 2021-06-30 13:04:53
我使用 开发了一个简单的应用程序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.dllRestart = 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将显示为:问题是在文件夹内publish(ExecStart 中指定的应用程序路径)我此时没有任何 log.txt。为什么?
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

由于您只为文件指定了相对路径,因此它将在服务的工作目录中创建。


您可以更改"log.txt"为完整路径或在 .service 文件中设置工作目录:


[Service]

WorkingDirectory=/path/you/want/the/file/to/be/in


查看完整回答
反对 回复 2021-07-03
  • 1 回答
  • 0 关注
  • 188 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信