【发布时间】:2018-05-24 16:29:27
【问题描述】:
我使用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 我会得到一个带有Hello World 的log.txt 文件。
现在,我正在尝试创建一个 linux 守护进程,我没有这方面的经验,所以我写了我在互联网上学到的东西,我创建了一个服务 cakked console.service,其中包含以下结构:
[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
将显示如下:
问题是在文件夹publish(ExecStart中指定的应用程序路径)里面我现在没有log.txt。
为什么?
【问题讨论】:
标签: c# .net linux .net-core daemon