我使用 开发了一个简单的应用程序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
…
- 1 回答
- 0 关注
- 188 浏览
添加回答
举报
0/150
提交
取消